PHP手册说
5.3.4 strip_tags()不再剥离自闭XHTML标记,除非selfable_tags中也给出了自闭XHTML标记。
但是当我这样做时(5.5):
$text = "<base/><br/>World<hr><input/>";
echo strip_tags($text);
输出为World
,即它会删除自闭XHTML标记。
答案 0 :(得分:5)
本案例中的文档完全错误。
strip_tags()
没有任何允许的标签剥离自闭标签就好了。然而,改变的是,从> = 5.3.4开始,自闭合标签被忽略:
$string = "foo<br>bar<br/>baz<br />\r\n";
echo strip_tags($string); // foobarbaz
echo strip_tags($string, '<br>'); // foo<br>bar<br/>baz<br />
echo strip_tags($string, '<br/>'); // foobarbaz
echo strip_tags($string, '<br />'); // foobarbaz
echo strip_tags($string, '<br><br/>'); // foo<br>bar<br/>baz<br/>
我created a bug要在文档中修复它。
docs are updated反映实际的正确行为。
然而,自我关闭和“普通”标签需要单独定义的事实对我来说似乎很奇怪,所以也许也需要修复。
在阅读原文bug report时,我不完全清楚已修复的内容以及预期的输出结果是什么,所以我需要进一步研究。击>
我最初的假设是,应该添加自动关闭标签和非自动关闭标签是错误的。