【发布时间】:2011-04-28 09:50:26
【问题描述】:
为什么会有这段代码
$string = "!@#$%^&*(<a@g.com";
echo $string;
仅输出:
!@#$%^&*(
这是一个 PHP 错误吗?
【问题讨论】:
-
是动态生成的字符串吗?
标签: php string special-characters echo html-entities
为什么会有这段代码
$string = "!@#$%^&*(<a@g.com";
echo $string;
仅输出:
!@#$%^&*(
这是一个 PHP 错误吗?
【问题讨论】:
标签: php string special-characters echo html-entities
【讨论】:
因为
使用&lt; 和&gt;
阅读本文了解更多信息
http://www.w3schools.com/HTML/html_entities.asp
您可以使用函数 htmlspecialchars 来转换这些特殊字符
【讨论】:
你需要做的:
echo htmlentities($string);
在浏览器上显示字符串。这是因为字符串中的< 被浏览器解释为 HTML 标记的开始。
所以不是 PHP 而是浏览器导致了这种行为。如果您在命令行上进行完全相同的显示,您将看到所有字符。
【讨论】:
如果您在 Web 浏览器中查看输出,则 < 开始一个标记,通常不会显示,而是在 HTML 文档结构解析器中进行解释。此外,双引号字符串内的$ 被插入为它后面的变量名;尝试在不会发生这种情况的情况下使用单引号。
试试这个:
$string = '!@#$%^&*(<a@g.com';
echo htmlentities($string);
【讨论】: