2013-04-04 143 views
6

当然,这已经被问及之前已经被搜索过的解决方案,到目前为止还没有成功。我想通过使用htmlentitieshtmlspecialchars改变了TM符号和符号来其HTML equivelents:即使有参数,PHP htmlentities也无法正常工作

$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

将display_errors设置为1并将error_reporting设置为E_ALL您可能会收到错误消息 – Halcyon 2013-04-04 15:51:17

+0

什么版本的php – Prisoner 2013-04-04 15:51:17

+0

我查看了没有列出的错误报告 – ToddN 2013-04-04 15:51:38

回答

2

你的代码工作对我来说: - ?

manual page for htmlentities()我们可以看到:

返回值

返回编码字符串。

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

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

+0

我想你是在做些什么,让我尝试编码,然后加入'htmlentities' – ToddN 2013-04-04 16:03:58

5

我不知道为什么,这个工作对我来说(ヶ辆对我来说被调用两次)

$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

这很奇怪,因为我必须基本调用htmlentities两次才能对它进行编码。为什么?这很奇怪,因为我以前从来没有遇到过这个问题,它无处可逃。 – 2013-07-14 08:54:30

3

我想我有同样的问题,因为Pjack(在8:54 7月14日的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; 

(I使用PHP/5.4.16从窗户-7 XAMPP)获得。

但是,经过一些更多的想法后,我发现浏览器显示字符串& lt;和& gt;如>和<。 (请参阅浏览器中的源代码)。第二次调用将&转换为&amp;,然后浏览器才会显示您期望的内容。

0

我几乎有同样的问题(其中每次都显示相同的文本),并与不同的回声的组合我得到它。似乎像firefox这样的浏览器每次都显示相同的文本。那是因为当你在文字时,它被转换回普通文本而回声。当我使用变量/文本回显一个脚本为console.log ged时,它实际上正确地回显了htmlentities文本(几乎)。它不是用html代码替换每一个特殊的字符,而是用我之前已经看到的其他代码替换'em'(我不记得名字)。再次感谢它,我再次获得相同的文本echo(记住它转换所有内容),但在console.log-version中给出了预期的结果。现在,结果如下:
1.执行htmlentities两次
2. 鸵鸟政策(与Firefox至少)回波的ヶ辆正常到网页。如果您想检查值是否确实正确,请回显将其记录到控制台中的脚本。
我希望这可以帮助其他人同样的问题,
VicStudio

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

更多编辑:只做2次htmlentities如果您希望将结果正常回显到页面中。如果你想直接发送f.e.一个数据库,只做一次! - >我之前说过的话是完全错误的。 :(