我在写代码: <?PHP $where='<something'; echo $where; ?>
但它没有回应任何东西,直到我改变字符串$到哪里去'<东西'(在“<”之后加一个空格),为什么?为什么字符串变量“<something”不能在php中输出?
它可能编译<到一些标记语言的开始。
我在写代码: <?PHP $where='<something'; echo $where; ?>
但它没有回应任何东西,直到我改变字符串$到哪里去'<东西'(在“<”之后加一个空格),为什么?为什么字符串变量“<something”不能在php中输出?
它可能编译<到一些标记语言的开始。
小于<
和大于>
标志是html实体或用于表示html标签的保留符号。要显示它们,您需要使用实体名称或实体编号。在“小于”的情况下,它们分别是<和<。
因此改变你的代码是这样的:
$where='<someting'; echo $where;
或更好,但
$where='<someting'; echo htmlentities($where);
如正确地@Waleed卡恩建议。
或更好 - 'echo htmlentities($ where)'。 – 2013-02-16 02:38:55
你可能想解释为什么你这样做。 (考虑到他甚至提出了这个问题) – 2013-02-16 02:39:48
谢谢你,&lt;并且hmmlentities也工作。 – Leonardo 2013-02-16 02:43:57
在浏览器中,<
引入了HTML标记。如果您的字符串是$where = "<img"
你可能最终的东西是这样的:
每当你输出文本,你应该总是要么运行htmlentities
,htmlspecialchars
或者只是str_replace("<","<",$where);
从正在处理中逃脱HTML(中最后一个仍然会允许&个字符;)
这是因为浏览器将前括号<
视为HTML标记。在浏览器中,右键单击页面并选择“查看源代码”。
如果你有一个终端,那么你可以使用:
php -f file.php
将输出的原始内容,而不对它进行分析。
如果你想看到的代码在浏览器中,那么你需要使用类似htmlentities()
来编码HTML字符:
$where = '<something';
echo htmlentities($where); // <something
不回,或者不出现* *呼应?检查页面源。 – 2013-02-16 02:37:49
您是否试过'“<东西”而不是? – didierc 2013-02-16 02:38:46
适合我:http://codepad.org/oUVy5M1D。 – 2013-02-16 02:50:13