PHP htmlentities即使参数也不起作用

Tod*_*ddN 6 php html-entities htmlspecialchars

当然,之前已经提出了这个问题并且已经找到了解决方案,所有这些解决方案迄今为止都没有用 我想通过使用htmlentities或更改TM符号和&符号到他们的html equivelents htmlspecialchars:

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

echo "HTML: " . htmlentities($TEST, ENT_COMPAT, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

这显示:

ORGINIAL: Kold Locker™ & other stuff
HTML: 
Run Code Online (Sandbox Code Playgroud)

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

我错过了其他人声称在其他解决方案中工作的内容?

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

7-i*_*bad 6

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

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

输出:

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

  • 这很奇怪,因为我基本上必须两次调用 htmlentities 才能对其进行编码。为什么?这很奇怪,因为我以前从来没有遇到过这个问题,而且突然就无法自行解决了。 (2认同)

P. *_*mer 5

我以为我遇到了与Pjack相同的问题(7月14日,8:54,消息):

$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str); 
Run Code Online (Sandbox Code Playgroud)

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

echo htmlentities(htmlentities($str));
Run Code Online (Sandbox Code Playgroud)

给出:

A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
Run Code Online (Sandbox Code Playgroud)

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

但是,经过一番思考,我发现浏览器显示字符串&lt;。和&gt; 为>和<。(请参阅浏览器中的源代码)。htmlentities的第二次调用转换为&&amp;,然后浏览器才首先显示您期望的内容。


Álv*_*lez 4

你的代码对我有用:-?

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

返回值

返回编码后的字符串。

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

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