我已经看到很多表达式删除特定标记(或许多指定的标记)和one to remove all but one specific tag,但我没有找到一种方法来删除除了许多被排除的所有标记(即除{{之外的所有标记1)})在PHP中。我对正则表达式很不满意,所以我需要一只手。 :)谢谢!
答案 0 :(得分:51)
strip_tags()
就是这样做的。
答案 1 :(得分:48)
您可以使用strip_tags
功能
¶strip_tags - 从字符串中删除HTML和PHP标记
strip_tags($contant,'tag you want to allow');
喜欢
strip_tags($contant,'<code><p>');
答案 2 :(得分:6)
如果您需要一些灵活性,可以使用基于正则表达式的解决方案并在此基础上构建。如上所述,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;