htmlentities仅在调用两次时才在浏览器上运行

che*_*zeh -5 php database html-entities

现在这是我在PHP中遇到的一个非常奇怪的行为:htmlentities在调用时似乎不起作用; 因此,当我这样做时:

echo htmlentities("<iframe>");
Run Code Online (Sandbox Code Playgroud)

浏览器输出字符串参数unescaped,即<iframe>.

但是,当我调用该函数两次时,它可以工作:

echo htmlentities(htmlentities("<iframe>"));
Run Code Online (Sandbox Code Playgroud)

给我: <iframe>

我注意到这个答案的奇怪行为,用户表达了同样的困惑.

现在我有两个问题,使用这个"有效的答案":首先,我知道这是一个奇怪的行为,当我的代码导出到另一个时,我无法保证会复制这种奇怪的东西(我希望它不是!)服务器.其次,为什么这种行为首先出现?

所以我的问题:我很想知道这种行为的起源以及该怎么做.

很遗憾你很多都无法验证我的问题,因为我正在使用我的localhost并htmlentities在其他服务器上正常工作.

Mac*_*ity 6

我认为你对浏览器解释结果感到困惑

echo htmlentities(htmlentities("<iframe>"));
Run Code Online (Sandbox Code Playgroud)

生产(原始产出)

&amp;lt;iframe&amp;gt;
Run Code Online (Sandbox Code Playgroud)

通过一个转换<>&lt;iframe&gt;
通行证二转换&&amp;

当您的浏览器呈现它时,&amp;然后呈现为&,在您的问题中生成输出.如果你查看来源,你会看到我在上面发布的内容.

所以它按预期工作.看演示