为什么字符串变量"<;某事“;可以';t在php中输出


Why string variable"<something" can't be output in php?

我正在编写代码:<?PHP $where='<something'; echo $where; ?>但在我将字符串$where更改为'<something'(在"<"后面加一个空格),为什么?

它可能编译<到一些标记语言的开始。

小于<和大于>的符号是html实体或用于表示html标记的保留符号。要显示它们,您需要使用实体名称或实体编号。在"小于"的情况下,它们是<以及<;分别地

所以这样更改你的代码:

$where='&lt;someting'; echo $where;

或者更好的

$where='&lt;someting'; echo htmlentities($where);

正如@Waleed Kahn正确建议的那样。

在浏览器中,<引入了一个HTML标记。如果你的字符串是$where = "<img",你可能会得到这样的结果:

图像http://example.com/

无论何时输出文本,都应该始终运行htmlentitieshtmlspecialchars或仅运行str_replace("<","&lt;",$where);来转义正在处理的HTML(最后一个仍然允许&character;)

这是因为浏览器将左括号<视为HTML标记。在浏览器中,右键单击页面并选择"查看源代码"。

如果你有一个终端,那么你可以使用:

php -f file.php

这将在不解析的情况下输出原始内容

如果你想在浏览器中看到代码,那么你需要使用htmlentities():之类的东西对HTML字符进行编码

$where = '<something';
echo htmlentities($where); // &lt;something