如何在strip_tags()中允许<br />
或以任何方式解决它?
<?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
谢谢, 刘
答案 0 :(得分:17)
不要使用自动关闭标签名称? echo strip_tags($text, '<br>');
strip_tags()
函数的allowable_tags
参数采用<tagname>
格式中允许的标记代码无效的原因是因为您使用了<br />
而不是{{1} }}
答案 1 :(得分:6)
strip_tags
并非旨在作为安全措施,将其与allowable_tags
一起使用肯定是不安全的,因为它会通过事件处理程序和其他有害属性。
如果您想允许用户输入一些白名单元素和属性,则需要使用带有正确HTML解析器的HTML清理库。请参阅示例HTML purifier。
用户评论通常最好不要让用户完全控制HTML标记,而是接受原始文本,在输出上对其进行HTML转义,并进行替换以从文本生成标记(例如:{{1 }} - &gt; \n
,<br>
- &gt; \n\n
,链接检测。)
答案 2 :(得分:2)
标签中也不允许有空格:http://php.net/manual/en/function.strip-tags.php(参见第二个注释)
答案 3 :(得分:1)
雅你可以将一个或多个标签混合在同一时间。
string strip_tags ( string $str [, string $allowable_tags ] )
检查文档
如果您想剥离新线,解决方案将在剥离之前使用 nl2br
所以
echo strip_tags(nl2br($text), '<br>');