как ? preg_replace

Brezee

Новичок
как ? preg_replace

мне нужно вернуть этот html документ без некоторых пареметров тегов, причем meta теги я взял для примера, а реально придется пройтись по нескольким видам тегов, т.е. table td ну и т.д.
пример

было
<META NAME="" CONTENT="" EQUIV="" ID="" TITLE="" URL="" >

получил
<META NAME="" CONTENT="" >

было
<IMG SRC="" ALT="" ALIGN="" BORDER="" HEIGHT="" USEMAP="" WIDTH="">

получил
<IMG SRC="" HEIGHT="" WIDTH="">

причем параметры естественно могут быть в кавычках, или не быть , пробелы быть и не быть, так вот надо это все учесть и не нужные свойства тегов и выбросить.
пытаюсь решить с помощью preg_replace , но видимо неправиль пишу шаблон!
Поэтому и обращаюсь за помощью! Help!
 

WOrel

Guest
скинь патерн если не правильно скажут где не правильно

а вобщето такую задачу одним патерном это изврат имхо...
а как написать все патерны тебе говорить не будут ибо это уже труд называется...

а кто у нас трудится? )
 

Yukko

Новичок
а кто у нас трудится? )
Это мне близко :)

Brezee
То, что я написал, отнюдь не является полным решением твоей проблемы, но неплохой, ИМХО, толчок к ее решению :)

$line = "
<table1 attr1=\"atrr1_value\" attr2=bla_bla>
<td1 attr3=bla2>
";
$tag = "table1";
$atr = "attr1";
preg_match("/<$tag.*?($atr\s*=\s*\"?([a-z0-9_]*)\"?).*?>/si",$line,$matches);
print_r($matches);

В $tag занеси в каком теге ты хочешь что-то сделать с атрибутами, в $atr занеси атрибут
Вот эта конструкция:
($atr\s*=\s*\"?([a-z0-9_]*)\"?)
матчит весь атрибут например:
attr1="atrr1_value"
результат занесется в \\1
Вот эта:
([a-z0-9_]*)
матчит само значение атрибута
результат занесется в \\2
atrr1_value (если есть кавычки то они в атрибут входить не будут, хотя можно переписать)
Пробелы, наличие-отсутствие кавычек этому регу пофигу.

Тебе осталось совсем чуть-чуть, используя данный рег, переписать его с функцией preg_replace (мне впадло трудиться :)), переписать его так, чтобы у тебя атрибуты для тега хранились в массиве, и делать за один проход сразу замену для всех атрибутов. Как это делается, смотри в документации по preg_replace там в комментариях есть очень интересный пример :)
 

Brezee

Новичок
Спасибо, за уделенное внимание!!!
Как хорошо что есть php сообщество!
 
Сверху