echo+htmlentities 不能正常工作?

echo+htmlentities is not working propely?

我有这个代码:

$title = 'Alguém';
<h1><?php echo htmlentities($title, \ENT_QUOTES, 'UTF-8', false); ?></h1>

PS:这只是一个示例,在我当前的代码中,我从数据库中获取了 $title 的值。

网页上可以看到的结果:

<h1>Alguém</h1>

并且可以在view-source:上看到的结果:

<h1>Algu&eacute;m</h1>

为什么会这样?我使用 htmlentities 正确吗?

echo htmlentities($title, ENT_QUOTES);

您的代码运行正常。 htmlentities 将 html 实体转换为定义的一系列字符,您的浏览器可以将这些字符解释为您要在浏览器中显示的实体。这样做是为了防止恶意代码 运行 在您的脚本中。

举个例子:

如果不使用 html 个实体,这行代码将实际工作。您的浏览器将代码行视为:

<script>alert("I just hacked your html")</script>

当您使用 htmlentities() 清理同一行代码时,它会将所有实体替换为浏览器解释为实体的已定义字符表示系列。这就是输出到浏览器的内容。

&lt;script&gt;alert(&quot;I just hacked your html&quot;)&lt;

此脚本不会在您的浏览器中获得 运行 作为 javascript。

这里有一个 link,您可以阅读它,它会为您提供一些额外的信息。关于 google 的大量信息概述了这一点。

html entities

这是 html 个实体的列表: Entity list

希望对您有所帮助。