echo + htmlentities无法正常工作?

时间:2019-01-02 06:13:36

标签: php echo html-entities

我有此代码:

$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

2 个答案:

答案 0 :(得分:1)

您的代码正常工作。 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运行。

这里是您可以阅读的链接,它将为您提供一些其他信息。谷歌上有很多信息对此进行了概述。

html entities

以下是html实体的列表: Entity list

希望有帮助。

答案 1 :(得分:0)

echo htmlentities($ title,ENT_QUOTES);