PHP htmlentities即使参数也不起作用

时间:2013-04-04 15:49:43

标签: php html-entities htmlspecialchars

当然,之前已经提出了这个问题并且已经找到了解决方案,所有这些解决方案到目前为止还没有成功。我想使用htmlentitieshtmlspecialchars将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

5 个答案:

答案 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');

输出

  

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

答案 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 &lt;b&gt;bold&lt;/b&gt; 

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

然而,经过一些更多的考虑,我发现浏览器显示字符串&amp; lt;和&amp; gt;作为&gt;和&lt;。 (请参阅浏览器中的源代码)。第二次调用htmlentities翻译&amp;进入&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);