对包含 html 的文本进行自定义筛选器


Custom filter on text containing html

我想通过将strip_tags与htmlspecialchars相结合来做一个自定义过滤器。

假设我们有以下字符串:<p>lorem ipsum <span>dolor sit amet</span></p>
我只希望浏览器解释<p>标签,并且我希望<span>标签以纯文本形式列出。实际上,我的问题是如何将不属于我的strip_tags allowable_tags列表的html标签显示为纯文本?

谢谢。

那么,如果我正确理解您,您的意思是将<p>标签保留为 HTML,但在<p></p>内转义任何其他 HTML 标签?

在这种情况下,您必须过滤字符串<p>lorem ipsum <span>dolor sit amet</span></p> ,例如使用preg_match()

我们试试这个模式^<p>(.*)<'/p>$函数是preg_match('/^<p>(.*)<'/p>$/', '<p>lorem ipsum <span>dolor sit amet</span></p>', $match)

请参阅参考 http://php.net/manual/en/function.preg-match.php

$match将返回一个数组 - 模式中的每个 () 表示您想要获得的匹配。

Array
(
    [0] => <p>lorem ipsum <span>dolor sit amet</span></p>
    [1] => lorem ipsum <span>dolor sit amet</span>
)

$match[1]是你可以使用的正确东西!

所以,你终于可以htmlspecialchars($match[1])了.结果是,<p></p>中的任何内容都很容易被转义