仅剥离有效的html

时间:2013-07-19 10:24:09

标签: php html strip-tags

我正在尝试从一段文本中删除HTML标记。然而问题是,无论我使用什么 - 正则表达式,strip_tags等。遇到同样的问题:它还会删除不是HTML但看起来像它的文本。

Some <foo@bar.com> Content--> Some Content
Some <Content which looks like this --> Some 

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:3)

完全正确的解决方案将是一个成熟的HTML解析器。有关完整讨论,请参阅this legendary question

简单的80%解决方案是查找所有已知标签并剥离它们。

RegExp('</?(a|b|blockquote|cite|dd|dl|dt|...|u)\b.*?>')

如果您循环使用标记数组并构建表达式,则代码将更具可读性。它不会很好地处理评论,因此如果您需要的不仅仅是黑客质量,请不要采用黑客方法。如果您需要正确性,请使用实际的HTML解析器(例如PHP中的DOMDocument)。

答案 1 :(得分:2)

您是否尝试过HTML purifier库?您可以将其配置为去除所有标签,我发现该库非常可靠。