繁体   English   中英

PHP htmlentities 即使使用参数也不起作用

[英]PHP htmlentities not working even with parameters

当然,这之前已经被问过并已经寻找了解决方案,但迄今为止所有这些都没有奏效。 我想通过使用htmlentitieshtmlspecialchars将 TM 符号和 & 符号更改为它们的 html 等效项:

$TEST = "Kold Locker™ & other stuff";
echo "ORGINIAL: " . $TEST . "<BR/>";

echo "HTML: " . htmlentities($TEST, ENT_COMPAT, 'UTF-8');

这显示:

ORGINIAL: Kold Locker™ & other stuff
HTML: 

我也用htmlspecialchars尝试过它,第二个参数改变了相同的结果。

我错过了其他人声称在其他解决方案中有效的东西?

更新:我尝试只显示utf8_encode($TEST)并显示HTML: Kold Locker™ & other stuff

我不知道为什么,这对我有用必须为我调用 htmlentities 两次

$html="<html> <head><head>something like this   </html>"
$entities_correction= htmlentities( $html, ENT_COMPAT, 'UTF-8');
echo  htmlentities( $entities_correction, ENT_COMPAT, 'UTF-8');

输出 :

&lt;html&gt; &lt;head&gt;&lt;head&gt;something like this &lt;/html&gt;

我以为我和 Pjack 有同样的问题(7 月 14 日 8:54 的 msg):

$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str); 

在浏览器(在我的情况下为 Firefox)中给出原始字符串 $str (没有任何翻译),而

echo htmlentities(htmlentities($str));

给出:

A 'quote' is &lt;b&gt;bold&lt;/b&gt; 

(我使用从 windows-7 XAMPP 获得的 PHP/5.4.16)。

然而,经过一些思考,我发现浏览器显示字符串 &lt; 和 &gt; 作为 > 和 <。 (查看浏览器中的源代码)。 htmlentities 的第二次调用将 & 转换为&amp; 只有这样,浏览器才会首先显示您的预期。

你的代码对我有用:-?

htmlentities()手册页中,我们可以阅读:

返回值

返回编码的字符串。

如果输入字符串在给定的编码中包含无效的代码单元序列,则将返回一个空字符串,除非设置了 ENT_IGNORE 或 ENT_SUBSTITUTE 标志。

我的猜测是输入数据没有正确编码为 UTF-8,函数返回一个空字符串。 (假设脚本没有崩溃,即该部分之后的代码仍在运行。)

我遇到了几乎相同的问题(不知何故,它每次都显示相同的文本)并且结合了不同的 echo´si 得到了它。 似乎像 Firefox 这样的网络浏览器每次都显示相同的文本。 那是因为当您echo显 htmlentities-text 时,它会在回显时转换回普通文本。 当我将带有变量/文本的脚本回显为console.log ,它实际上(几乎)正确地回显了 htmlentities 文本。 它没有用 html 编码替换每个特殊字符,而是用我以前见过的其他一些编码替换 'em(我不记得名字了)。 Htmlentities-ing 再次,我再次得到相同的文本 echo´d(记住它会转换所有内容),但是在 console.log-version 中回显它给了我预期的结果。 现在,再次,结果:
1. 执行htmlentities两次
2.不要(至少在 Firefox 中)像往常一样将 htmlentities到网页中 如果您想检查该值是否确实正确,请回显将其记录到控制台的脚本。
我希望这可以帮助其他有同样问题的人,
维克工作室

编辑: 3. 如果您使用的是$_POST公式,请不要忘记将accept-charset="UTF-8" (或其他一些字符集)添加到<form>标记中。

甚至更多编辑:如果您希望将结果正常回显到页面中, htmlentities执行 2 次htmlentities 如果您想直接发送 fe 数据库,只需做一次! -> 我之前说的部分是错误的。 :(

这是一篇旧帖子,但对于仍在寻找解决方案的任何人,以下是我成功使用的方法:

echo html_entity_decode($htmlString);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM