Как заменить в html все теги кроме определенных?

Нужно в html документе заменить все теги на какое-то значение, например "#%$%#". При этом есть теги которые нельзя трогать.

Пока дошел до такого:
$var = preg_replace('~<[^>]*[^psb(li|strong|span|br)].?>~is', '#%$%#', $var);

Но шаблон явно не верный, так как цепляет не только перечисленное. Буду премного благодарен за помощь в исправлении регулярного выражения.
  • Вопрос задан
  • 3415 просмотров
Пригласить эксперта
Ответы на вопрос 2
MintTea
@MintTea
Проблема не в шаблоне, проблема в подходе. Прекратите парсить html регулярками.
Если вам нужно просто вырезать лишние теги, обратите внимание на второй параметр функции strip_tags.
В противном случае найдите себе какую-нибудь библиотеку для работы с DOM-деревом, эту, например, и с ее помощью реализуйте нужный вам обход и обработку элементов.
Ответ написан
@ShamblerR
тег это однослово ограничьте регулярку более жестко.
<слово> - кроме (1|2|3)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы