PHP:如何在允许<时删除HTML标记和>

时间:2010-01-03 22:57:18

标签: php html

问题:如何使用PHP删除HTML标记但允许使用更大和更小的符号?

如果我使用PHP的strip_tags()函数,它就不能正常工作:

$string = '<p>if A > B</p>'
echo strip_tags($string);  // if A B
// but I want to output "if A > B"

更新

基本上,我只想允许/显示纯文本。

5 个答案:

答案 0 :(得分:4)

您可以使用HTML Purifier这不仅适用于您撰写的<p>if A > B</p>示例,还适用于DrJokepu撰写的示例<p>1<2 && 6>4</p>

如果输入<p>1<2 && 6>4</p>允许的元素设置为none,则HTML净化器会提供输出:1&lt;2 &amp;&amp; 6&gt;4

答案 1 :(得分:0)

这将删除看起来像HTML标记的所有内容。

htmlentities(preg_replace('/<\\S.*?>/', '', $text));

答案 2 :(得分:0)

不幸的是,最简单和最可靠的方法是使用HTML解析器。 This one会做到这一点。我不知道它是否会像上面那样处理HTML片段。如果没有,那么包装以使其可接受HTML应该是微不足道的。

正如其他人指出的那样,使用正则表达式解析HTML有许多边缘情况可以满足和困难,因为HTML不常规。

答案 3 :(得分:0)

试试我写的这个正则表达式:&lt;([^&gt;] ?=“(\”| [^“])?”“?([^&gt; ] = ''(\ '' | [^ ''])? '') [^&gt;有] * GT;

答案 4 :(得分:0)

使用:

<p><?php echo htmlspecialchars("if A > B") ?></p>

(当然你可以使用任何输入而不是文字字符串)

htmlspecialchars()将纯文本转换为HTML文字,保留<>