2013-02-16 34 views
0

我在写代码: <?PHP $where='<something'; echo $where; ?> 但它没有回应任何东西,直到我改变字符串$到哪里去'<东西'(在“<”之后加一个空格),为什么?为什么字符串变量“<something”不能在php中输出?

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

+0

不回,或者不出现* *呼应?检查页面源。 – 2013-02-16 02:37:49

+0

您是否试过'“<东西”而不是? – didierc 2013-02-16 02:38:46

+0

适合我:http://codepad.org/oUVy5M1D。 – 2013-02-16 02:50:13

回答

1

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

因此改变你的代码是这样的:

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

或更好,但

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

如正确地@Waleed卡恩建议。

+0

或更好 - 'echo htmlentities($ where)'。 – 2013-02-16 02:38:55

+0

你可能想解释为什么你这样做。 (考虑到他甚至提出了这个问题) – 2013-02-16 02:39:48

+0

谢谢你,&lt;并且hmmlentities也工作。 – Leonardo 2013-02-16 02:43:57

0

在浏览器中,<引入了HTML标记。如果您的字符串是$where = "<img"你可能最终的东西是这样的:

Image http://example.com/

每当你输出文本,你应该总是要么运行htmlentitieshtmlspecialchars或者只是str_replace("<","&lt;",$where);从正在处理中逃脱HTML(中最后一个仍然会允许&个字符;)

0

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

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

php -f file.php 

将输出的原始内容,而不对它进行分析。

如果你想看到的代码在浏览器中,那么你需要使用类似htmlentities()来编码HTML字符:

$where = '<something'; 
echo htmlentities($where); // &lt;something 
相关问题