Я видел много выражений для удаления определенного тега (или многих указанных тегов) и один, чтобы удалить все, кроме одного конкретного тега, но я не знаю 't нашел способ удалить все, кроме многих исключенных (т.е. все кроме p, b, i, u, a, ul, ol, li
) в PHP. Я слишком далек от регулярного выражения, поэтому мне нужна рука.:) Спасибо!
Удалите все теги HTML, кроме разрешенных
Ответ 1
strip_tags()
делает именно это.
Ответ 2
вы можете сделать это, используя strip_tags
функцию
¶ strip_tags - Удалите теги HTML и PHP из строки
strip_tags($contant,'tag you want to allow');
like
strip_tags($contant,'<code><p>');
Ответ 3
Если вам нужна гибкость, вы можете использовать решение на основе регулярных выражений и основываться на нем. 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;