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

时间:2014-12-12 21:33:17

标签: php html

我想通过将strip_tags与htmlspecialchars结合起来进行自定义过滤器。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

因此,如果我正确理解您,您的意思是将<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将返回一个数组 - 模式中的every()意味着你想得到的匹配。

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&gt;中的任何内容都是如此。将很容易转义