我正在编写代码:<?PHP
$where='<something';
echo $where;
?>
但在我将字符串$where更改为'<something'(在"<"后面加一个空格),为什么?
它可能编译<到一些标记语言的开始。
小于<
和大于>
的符号是html实体或用于表示html标记的保留符号。要显示它们,您需要使用实体名称或实体编号。在"小于"的情况下,它们是<以及<;分别地
所以这样更改你的代码:
$where='<someting'; echo $where;
或者更好的
$where='<someting'; echo htmlentities($where);
正如@Waleed Kahn正确建议的那样。
在浏览器中,<
引入了一个HTML标记。如果你的字符串是$where = "<img"
,你可能会得到这样的结果:
图像http://example.com/
无论何时输出文本,都应该始终运行htmlentities
、htmlspecialchars
或仅运行str_replace("<","<",$where);
来转义正在处理的HTML(最后一个仍然允许&character;)
这是因为浏览器将左括号<
视为HTML标记。在浏览器中,右键单击页面并选择"查看源代码"。
如果你有一个终端,那么你可以使用:
php -f file.php
这将在不解析的情况下输出原始内容
如果你想在浏览器中看到代码,那么你需要使用htmlentities()
:之类的东西对HTML字符进行编码
$where = '<something';
echo htmlentities($where); // <something