【问题标题】:PHP: Does strip_tags() strip self closing XHTML tags or not?PHP:strip_tags() 是否剥离自闭合 XHTML 标记?
【发布时间】:2015-09-01 23:32:17
【问题描述】:

PHP 手册说

5.3.4 strip_tags() 不再去除自闭合 XHTML 标记,除非在 allowable_tags 中也给出了自闭合 XHTML 标记。

但是当我这样做时(5.5):

$text = "<base/><br/>World<hr><input/>";

echo strip_tags($text);

输出是World,即它确实去除了自闭合 XHTML 标记。

【问题讨论】:

  • 您正在将其回显...到 cli 或浏览器?请改用var_dump()
  • 试试var_dump($text);
  • string 'World' (length=5)
  • 我正在研究它,但乍一看似乎手册的措辞是错误的。因为“strip_tags() 不再剥离自闭合 XHTML 标记,除非在 allowable_tags 中也给出了自闭合 XHTML 标记。”没有意义
  • @PeeHaa 在这里是正确的。这根本没有任何意义。

标签: php strip-tags


【解决方案1】:

这种情况下的文档完全是错误的。

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 时,我并不完全清楚修复了什么以及预期的输出是什么,因此我需要进行更多调查。

我最初认为应该添加自关闭标签和非自关闭标签的假设是错误的。

【讨论】:

  • 我认为你弄错了。手册试图说的(但失败)是您 需要分别允许自动关闭和“正常”标签以保留两者,就像在 PHP <br> 放在允许的标签中,strip_tags 将不再剥离&lt;br/&gt;。比较:3v4l.org/GntM3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
相关资源
最近更新 更多