8

当然,这已经被问过并且已经寻找解决方案,到目前为止所有这些都没有奏效。我想使用htmlentitiesor将 TM 符号和 & 符号更改为它们的 html 等效项htmlspecialchars

$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

4

5 回答 5

6

我不知道为什么,这对我有用(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;

于 2013-06-04T00:49:59.620 回答
6

我以为我和 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)。

然而,经过一番思考,我突然想到浏览器显示字符串 < 和> 作为 > 和 <。(请参阅浏览器中的源代码)。htmlentities 的第二次调用将 & 转换为&amp;,然后浏览器首先显示您的预期。

于 2013-08-31T08:37:18.523 回答
4

你的代码对我有用:-?

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

返回值

返回编码的字符串。

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

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

于 2013-04-04T16:01:16.137 回答
1

我遇到了几乎相同的问题(不知何故,它每次都显示相同的文本)并且结合了不同的 echo´si 得到了它。似乎像 Firefox 这样的网络浏览器每次都显示相同的文本。那是因为当您echo使用 htmlentities-text 时,它会在回显时转换回普通文本。当我使用要生成的变量/文本回显脚本时console.log,它实际上(几乎)正确地回显了 htmlentities 文本。它不是用 html 编码替换每个特殊字符,而是用我以前见过的一些其他编码替换“em”(我不记得名字了)。再次使用 Htmlentities,我再次得到相同的文本回显(记住它会转换所有内容),但在 console.log-version 中回显它会给我预期的结果。现在,再次,结果:
1. 执行htmlentities 两次
2.不要(至少使用 firefox)将 htmlentities 像往常一样回显到网页中。如果您想检查该值是否确实正确,请回显将其记录到控制台的脚本。
我希望这可以帮助其他有同样问题的人,
VicStudio

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

更多编辑htmlentities:如果您希望将结果正常回显到页面中,请仅执行 2 次。如果您想直接发送数据库,只需执行一次!-> 我之前所说的部分是错误的。:(

于 2017-07-09T10:02:56.023 回答
0

这是一篇旧帖子,但对于仍在寻找解决方案的任何人,这是我成功使用的:

echo html_entity_decode($htmlString);
于 2020-09-02T18:48:36.070 回答