为了防止跨站点脚本编写,我正在使用htmlentities。但是我对代码的输出有一点怀疑。
$str = "Albert Einstein said: 'E=MC²'";
$enc = htmlenities($str);
使用此代码,我正在编码用户的输入数据。因此,变量$ enc将为
Albert Einstein said: 'E=MC²'<br>
但是当呈现此代码并提供输出时,输出将为
Albert Einstein said: 'E=MC²'
我的疑问是我们还没有解码$ enc,输出应该显示为
Albert Einstein said: 'E=MC²'<br>
为什么会这样?
答案 0 :(得分:0)
某些字符保留在HTML中。
假设我们想用HTML编写一些东西来显示图像。
然后,我们将编写<img src="someimage.jpg" />
,浏览器将加载并呈现页面中的图像。
现在考虑我们有一个学习型网站,我们想教给观众如何在网页中加载图像。那我们现在该怎么办?
要显示这些保留字符,我们需要使用HTML实体,浏览器将为我们处理它。
HTML中保留的字符必须替换为字符实体。
键盘上不存在的字符也可以替换 按实体。
您可以在w3schools-https://www.w3schools.com/html/html_entities.asp中了解它。