Общие > Веб-технологии
Програмнное включение одного html документа в другой без использования фреймов
(1/1)
DJ Tyler:
При проектировании собственного движка сайта на PHP возник вопрос как правильнее всего организовать администрирование статических html-страниц.
Тоесть ситуация: люди, совершенно незнакомые с web-технологиями хотят обновить одну из страниц своего сайта в интерфейсе администрирования. Скорее всего они её сформируют в каком-нибудь Word\'е или в лучшем случае, используют какой-нибудь визуальный html-редактор, добавляющий в документ кучу мусора, к примеру стили, как это делает Word.
У меня в интерфейсе администрирования соотв. реализована форма закачки статических страниц для обновления информации.
В последствии, закаченная страница включается скриптом в место под контент в главную страницу, содержащую собственно дизайн.
Проблема: Закаченная страница потенциально содержит теги , , , . А может и не содержит. Кто знает, на что горазд Вася пупкин, создавший страницу для последующей закачки?...
Как способы решения, возможны такие варианты:
1. просто включить закаченную страницу в дизайн и не парится. Пробовал включать сформированную в Word сложную страницу с картинками, таблицами и стилями, а также со всеми сопутствующими тегами , , , ... в существующий дизайн, имеющий тоже довольно сложную структуру и свои стили. На удивление, всё работает, и IE и Opera отображают свёрстанную страницу абсолютно корректно, хотя этот способ в общем случае очень кривой, но самый простой. Всё же есть опасность совпадения каких-нибудь стилей и тогда всё испортится, что недопустимо.
2. удалить скриптом из закаченной страницы всевозможные лишние теги заголовков и стили. Но тогда содержимое страницы может отображаться некорректно из-за отсутствия её стилей...
Я уверен, что данная проблшема возникала перед многими web-мастерами. Как же её правильнее решить? Может существует способ получше? Если 2й способ приемлимый, подскажите пожалуйста может существуют готовые скрипты для "очистки документов" перед их "внедрением"?
Заранее примного лагодарен! :)
brainkiller:
Поставьте им лучше WYSIWYG-редактор. Бесплатных, благо, хватает.
Greg:
сам сейчас решаю такую проблему уже в который раз. и кстати склоняюсь к совету brainkiller. реально - пусть верстают непосредственно в админ-панели
DJ Tyler:
Да я вообще использовал такую штуку в одном из моих проектов. FCKEditor называется. Вещь-то конечно хорошая, но... работает медленно. У всех же Dial Up стоит... Я вот помучился, написал тут код, позволяющий удалять из HTML-документа заголовки и прочую фень:
function TFileRead($filename)
{
if(!file_exists($filename)) {return \'\';}
$fh = fopen($filename, "r");
$data = fread($fh, filesize($filename));
fclose($fh);
return $data;
}
function CutTag($data,$keyword,$shema_num)
{
$rex_exp[1]="<( )*$keyword([^>])*>"; // открывающий тэг
$rex_exp[3]="<([ ])*/([ ])*$keyword([ ^>])*>"; // закрывающий тэг
$rex_exp[2]="($rex_exp[1]).*($rex_exp[3])"; // откр.+закр. тэги со всем внутр. содержимым
return eregi_replace($rex_exp[$shema_num],\'\',$data);
}
function StripHtml($source_fn, $dest_fn=\'\')
{
$tags = array(
1 => array("html","meta","link","body"), // удаляемые открывающие тэги
2 => array("title","style","head"), // удаляемые тэги, содержащие инфу между откр. и закр.
3 => array("body","html") // удаляемые закрывающие тэги
);
if($dest_fn==\'\') {$dest_fn=$source_fn;}
$fdata=TFileRead($source_fn); //читаем все данные входного Html документа
if($fdata==\'\') {return \'\';} //ЕСЛИ ФАЙЛ ПУСТОЙ, ЛИБО ЕГО НЕТ, ВОЗВРАЩАЕМ \'\'
for($i=1;$i<=3;$i++) // проход по всем 3м типам тэгов
{
for($j=0;$j<count($tags[$i]);$j++) // проход по каждому тэгу в отдельности
{
$fdata=CutTag($fdata,$tags[$i][$j],$i);
}
}
return $fdata;
}
echo StripHtml(\'example.htm\');
Только вот при попытке удалять такие вещи, как скрипты, это регулярное выражение $rex_exp[2] в CutTag удаляет всё внутри также. К-примеру, есть что-то типа:
текст скрипта №1
"бла-бла-бла"
текст скрипта №2
Так вот удаляется всё вместе, включая нужный "бла-бла-бла". Не подскажите, как бы регулярное выражение подправить, что бы всё корректно удалялось?
brainkiller:
Возьмите что-нибудь полегче FCK. Возможно, функциональность будет попроще, зато пользовательский ввод будет куда более предсказуемым, чем в случае с загрузкой страницы.
К примеру, несомненным плюсом онлайн-WYSIWYG-редактора является отсутствие в пользовательском вводе абсолютных путей, указывающих на картинки, лежащие где-нибудь на жестком диске пользователя. :)
Навигация
Перейти к полной версии