[英]PHP htmlentities not working even with parameters
当然,这之前已经被问过并已经寻找了解决方案,但迄今为止所有这些都没有奏效。 我想通过使用htmlentities
或htmlspecialchars
将 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');
输出 :
<html> <head><head>something like this </html>
我以为我和 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 <b>bold</b>
(我使用从 windows-7 XAMPP 获得的 PHP/5.4.16)。
然而,经过一些思考,我发现浏览器显示字符串 < 和 > 作为 > 和 <。 (查看浏览器中的源代码)。 htmlentities 的第二次调用将 & 转换为&
只有这样,浏览器才会首先显示您的预期。
你的代码对我有用:-?
在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.