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