【发布时间】:2016-08-18 00:40:18
【问题描述】:
现在这是我在使用 PHP 时遇到的一个完全奇怪的行为:htmlentities 在调用时似乎不起作用;因此,当我这样做时:
echo htmlentities("<iframe>");
浏览器输出未转义的字符串参数,即&amp;lt;iframe&amp;gt;。
但是,当我调用该函数两次时,它可以工作:
echo htmlentities(htmlentities("<iframe>"));
给我:&amp;lt;iframe&amp;gt;
我注意到from this answer 的奇怪行为,用户表达了同样的困惑。
现在我在使用这个“有效的答案”时遇到了两个问题:首先,我知道这是一种奇怪的行为,并且不能保证当我的代码是导出到另一台服务器。其次,为什么会出现这种行为?
所以我的问题是:我很想知道这种行为的起源以及如何处理它。
很遗憾,你们中的很多人都无法验证我的问题,因为我在本地主机上工作,而 htmlentities 在其他服务器上工作正常。
【问题讨论】:
-
这不仅适用于 PHP 7,我在 5.6.23 上也得到了与您相同的结果,所以这必须追溯到更远的地方。
-
查看源代码,你会看到你得到了正确的结果。
-
"浏览器输出未转义的字符串参数,即
-
“让我们忘记浏览器吧,我使用的是数据库,它保存原始 HTML,没有编码” - 那么你没有在这里向我们展示整个图片以及如何您正在插入它以及使用了哪些函数/API 等。现在那个“数据库”评论是一个全新的球赛;如果我可以说,你给我们扔了一个弧线球。所以现在,情节似乎变厚了。
-
我同意@Fred-ii-您如何渲染数据库中的内容?命令行界面?工作台? PHPMyAdmin?如果是最后一个,您仍在通过浏览器查看数据库输出
标签: php database html-entities