为何字符串变量“

时间:2013-02-16 02:36:35

标签: php

我正在编写代码: <?PHP $where='<something'; echo $where; ?> 但是在我将字符串$ where更改为'&lt;之前,它不会回显任何内容'(在“&lt;”之后添加一个空格),为什么?

它可能会编译&lt;一些标记语言的开头。

3 个答案:

答案 0 :(得分:1)

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

所以改变你的代码:

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

或更好

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

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

答案 1 :(得分:0)

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

Image http://example.com/

每当您输出文字时,您应该始终运行htmlentitieshtmlspecialchars或仅str_replace("<","&lt;",$where);以逃避处理HTML(最后一个仍然允许&amp;字符;)

答案 2 :(得分:0)

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

如果您有终端,则可以使用:

php -f file.php

这将输出原始内容而不解析它。

如果您想在浏览器中查看代码,则需要使用htmlentities()之类的内容对HTML字符进行编码:

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