当然,之前已经提出了这个问题并且已经找到了解决方案,所有这些解决方案到目前为止还没有成功。我想使用htmlentities
或htmlspecialchars
将TM符号和符号更改为其html equivelents:
$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
答案 0 :(得分:5)
我不知道为什么,这对我有用( 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>
答案 1 :(得分:4)
我以为我和Pjack有同样的问题(7月14日8:54的消息):
$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)。
然而,经过一些更多的考虑,我发现浏览器显示字符串&amp; lt;和&amp; gt;作为&gt;和&lt;。
(请参阅浏览器中的源代码)。第二次调用htmlentities翻译&amp;进入&
,然后浏览器才会显示您的预期。
答案 2 :(得分:2)
您的代码适合我: - ?
在manual page for htmlentities()
我们可以阅读:
返回值
返回编码的字符串。
如果输入字符串中包含无效的代码单元序列 给定编码将返回一个空字符串,除非 设置了ENT_IGNORE或ENT_SUBSTITUTE标志。
我的猜测是输入数据没有正确编码为UTF-8,而且函数返回一个空字符串。 (假设脚本没有崩溃,即该部分之后的代码仍在运行。)
答案 3 :(得分:0)
我遇到了几乎相同的问题(每次都以不同的方式显示相同的文字)并且结合了不同的回声我得到了它。似乎像firefox这样的webbrowsers每次都显示相同的文本。这是因为当您echo
htmlentities-text时,它会在回显时转换回普通文本。当我用变量/文本回显一个脚本为console.log
ged时,它实际上正好回显了htmlentities文本(几乎)。它不是用html-codings替换每个特殊字符,而是用我以前见过的其他编码替换'em(我不记得名字)。 Htmlentities再次,它再次得到相同的文本回声(记住它转换所有),但在console.log-version中回显它给了我预期的结果。现在,再次,结果:
1.执行htmlentities
两次!
2. 不要(至少使用firefox)回显 htmlentities正常进入网页。如果您想检查该值是否确实正确,请回显一个将其记录到控制台的脚本
我希望这可以帮助其他有同样问题的人,
VicStudio
编辑:3。如果您使用的是$_POST
公式,请不要忘记将accept-charset="UTF-8"
(或其他一些字符集)添加到<form>
标签
更多编辑:如果您希望将结果恢复到页面中,则只需执行2次htmlentities
。如果你想直接发送f.e.一个数据库,只做一次! - &GT;我之前说的是部分错误。 :(
答案 4 :(得分:0)
这是一篇旧文章,但是对于仍在寻找解决方案的任何人,这是我成功使用的方法:
echo html_entity_decode($htmlString);