为什么这段代码
$string = "!@#$%^&*(<a@g.com";
echo $string;
仅输出:
!@#$%^&*(
这是一个PHP错误吗?
答案 0 :(得分:2)
因为&lt;是HTML中的保留字符:)
使用<
和>
阅读本文以获取更多信息
http://www.w3schools.com/HTML/html_entities.asp
您可以使用函数htmlspecialchars转换此类特殊字符
答案 1 :(得分:1)
答案 2 :(得分:1)
你需要这样做:
echo htmlentities($string);
显示浏览器上的字符串。这是因为浏览器将字符串中的<
解释为HTML标记的开头。
所以它不是PHP而是导致此行为的浏览器。如果在命令行上执行完全相同的显示,则会看到所有字符。
答案 3 :(得分:1)
如果您在Web浏览器中查看输出,则<
开始标记,并且通常不会显示,而是在HTML文档结构解析器中进行解释。此外,双引号字符串中的$
被内插为其后面的变量名称;尝试使用单引号,这不会发生。
试试这个:
$string = '!@#$%^&*(<a@g.com';
echo htmlentities($string);