Убрать все теги HTML, кроме разрешенных - PullRequest
31 голосов
/ 06 июня 2011

Я видел много выражений для удаления определенного тега (или многих указанных тегов) и одного для удаления всех, кроме одного конкретного тега , но я не нашел способа удалить всекроме многих исключенных (т.е. все, кроме p, b, i, u, a, ul, ol, li) в PHP.Я не очень хорошо разбираюсь в регулярных выражениях, поэтому мне нужна рука.:) Спасибо!

Ответы [ 3 ]

51 голосов
/ 06 июня 2011

strip_tags() делает именно это.

48 голосов
/ 21 января 2013

Вы можете сделать это, используя strip_tags function

strip_tags - вырезать теги HTML и PHP из строки

 strip_tags($contant,'tag you want to allow');

как

  strip_tags($contant,'<code><p>');
6 голосов
/ 04 мая 2013

Если вам нужна гибкость, вы можете использовать решение на основе регулярных выражений и опираться на него. strip_tags, как указано выше, все еще должно быть предпочтительным подходом.

Следующие команды удаляют только указанные вами теги (черный список):

// tags separated by vertical bar
$strip_tags = "a|strong|em";

// target html
$html = '<em><b>ha<a href="" title="">d</a>f</em></b>';

// Regex is loose and works for closing/opening tags across multiple lines and
// is case-insensitive

$clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html);

// prints "<b>hadf</b>";
echo $clean_html;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...