1
Веб-технологии / Програмнное включение одного html документа в другой без использования фреймов
« : 08 Ноября 2006, 19:16:43 »
Да я вообще использовал такую штуку в одном из моих проектов. FCKEditor называется. Вещь-то конечно хорошая, но... работает медленно. У всех же Dial Up стоит... Я вот помучился, написал тут код, позволяющий удалять из HTML-документа заголовки и прочую фень:
if($dest_fn==\'\') {$dest_fn=$source_fn;}
$fdata=CutTag($fdata,$tags[$i][$j],$i);
echo StripHtml(\'example.htm\');
Только вот при попытке удалять такие вещи, как скрипты, это регулярное выражение $rex_exp[2] в CutTag удаляет всё внутри также. К-примеру, есть что-то типа:
"бла-бла-бла"
Так вот удаляется всё вместе, включая нужный "бла-бла-бла". Не подскажите, как бы регулярное выражение подправить, что бы всё корректно удалялось?
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 удаляет всё внутри также. К-примеру, есть что-то типа:
"бла-бла-бла"
Так вот удаляется всё вместе, включая нужный "бла-бла-бла". Не подскажите, как бы регулярное выражение подправить, что бы всё корректно удалялось?