регулярка : удаление текста среди тэгов, оставить только тэги с содержимым

Ekklipce

Новичок
регулярка : удаление текста среди тэгов, оставить только тэги с содержимым

Задача : коректность ввода флеш объекта с тэгами (object, embed, param)
Придуманное решение : очистить сначала от левых тэгов хвукнцией strip_tags, затем от оставшегося текста

помогите с регуляркой...

то есть текст вне разрешенных тегов снести... или просто текст убрать, ибо в обьекте флеша теги не имеют просто текстового содержимого без тегов...

иначе говоря :

1.
Код:
<object width="380" height="264"><p>dgdgdgdfgdfgdfgdfgdfgdfgdf</p>
<param name="movie" value="..."></param>
<embed src="..." type="application/x-shockwave-flash" 
width="380" height="264"></embed>
</object>
2. после стрип_тагс
Код:
<object width="380" height="264">dgdgdgdfgdfgdfgdfgdfgdfgdf
<param name="movie" value="..."></param>
<embed src="..." type="application/x-shockwave-flash" 
width="380" height="264"></embed>
</object>
3. фпесту текст вне разрешенных тегов (функциональность этой регулярки и нужна)
Код:
<object width="380" height="264">
<param name="movie" value="..."></param>
<embed src="..." type="application/x-shockwave-flash" 
width="380" height="264"></embed>
</object>
 

hermit_refined

Отшельник
$html = preg_replace('@(^|>)[^<]+?(<|$)@s', '\\1\\2', $html);
при условии, конечно, что атрибуты не содержат <>. иначе - анализатор намного сложней нужен.
 

hermit_refined

Отшельник
Sorry, я подправил: вместо точки - [^<] разумеется, иначе стык тегов неправильно обрабатывается.
 

Ekklipce

Новичок
2 hermit_refined

не пашет твоя регулярка :((

-~{}~ 03.10.06 19:28:

блин.. и исправленная новая не хочет работать

-~{}~ 03.10.06 19:31:

работает, только верно будет так

Код:
 $html = preg_replace('@(^|>)[^<]+?(<|$)@s', '\\1\\2', $html);
без одного пробела...(^|>(здесь был пробел))
 

hermit_refined

Отшельник
Хм.. Это, видимо, особенность форума - когда я смотрю "редактировать" никакого пробела у меня нет ;-)
Надо было, конечно, как "PHP код" писать.
 

Ekklipce

Новичок
2 hermit_refined
спасибки..! для будующих поколений форума с такой же проблемой посвещается..
 
Сверху