除了允许之外,删除所有HTML标记

时间:2011-06-06 01:15:56

标签: php html regex tags

我已经看到很多表达式删除特定标记(或许多指定的标记)和one to remove all but one specific tag,但我没有找到一种方法来删除除了许多被排除的所有标记(即除{{之外的所有标记1)})在PHP中。我对正则表达式很不满意,所以我需要一只手。 :)谢谢!

3 个答案:

答案 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;