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

  • Автор темы Автор темы Ekklipce
  • Дата начала Дата начала

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

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

-~{}~ 03.10.06 19:28:

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

-~{}~ 03.10.06 19:31:

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

Код:
 $html = preg_replace('@(^|>)[^<]+?(<|$)@s', '\\1\\2', $html);

без одного пробела...(^|>(здесь был пробел))
 
Хм.. Это, видимо, особенность форума - когда я смотрю "редактировать" никакого пробела у меня нет ;-)
Надо было, конечно, как "PHP код" писать.
 
2 hermit_refined
спасибки..! для будующих поколений форума с такой же проблемой посвещается..
 
Сверху