9

如何允许<br />strip_tags() 或任何我可以解决的方法?

<?php
$text = '<p>Test <br />paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p>, <a>, <br />
echo strip_tags($text, '<p><a><br />');
echo "\n";

// Allow <br /> only
echo strip_tags($text, '<br />');
?>

结果:

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
Test paragraph. Other text

谢谢,刘

4

4 回答 4

17

不要使用自闭合标签名称?echo strip_tags($text, '<br>');

strip_tags()函数的allowable_tags参数采用表单中允许的标签<tagname>您的代码不起作用的原因是因为您使用<br />而不是<br>.

于 2010-09-25T13:27:14.763 回答
6

strip_tags不打算作为一种安全措施,使用它allowable_tags肯定是不安全的,因为它会让事件处理程序和其他有害属性通过。

如果您想允许用户输入一些列入白名单的元素和属性,则需要使用带有适当 HTML 解析器的 HTML 清理库。参见例如HTML 净化器

用户评论通常最好不要让用户控制 HTML 标记,而是接受原始文本,在输出时对其进行 HTML 转义,并进行替换以从文本生成标记(例如:\n-> <br>\n\n-> </p><p>,链接检测)。

于 2010-09-25T14:07:18.757 回答
2

标签中也不允许使用空格:http: //php.net/manual/en/function.strip-tags.php(见第二条注释)

于 2012-10-22T17:30:47.377 回答
1

是的,您可以混合一个或多个标签同时进行条带化。

string strip_tags ( string $str [, string $allowable_tags ] )

检查文件

如果你想剥离新线,解决方案将在剥离之前使用nl2br

所以

echo strip_tags(nl2br($text), '<br>');
于 2010-09-25T13:28:32.943 回答