Общие > Веб-технологии

Програмнное включение одного 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-редактора является  отсутствие в пользовательском вводе абсолютных путей, указывающих на картинки, лежащие где-нибудь на жестком диске пользователя. :)

Навигация

[0] Главная страница сообщений

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии