PHP字符串缩短了

时间:2010-10-21 04:27:49

标签: php string special-characters echo html-entities

为什么这段代码

$string = "!@#$%^&*(<a@g.com"; 
echo $string; 

仅输出:

!@#$%^&*(

这是一个PHP错误吗?

4 个答案:

答案 0 :(得分:2)

因为&lt;是HTML中的保留字符:)

使用&lt;&gt;

阅读本文以获取更多信息

http://www.w3schools.com/HTML/html_entities.asp

您可以使用函数htmlspecialchars转换此类特殊字符

http://php.net/manual/en/function.htmlspecialchars.php

答案 1 :(得分:1)

我没有看到:

http://ideone.com/zhycx

也许你的文件中有一些奇怪的字符?确保您在源代码中使用“普通”编码。

答案 2 :(得分:1)

你需要这样做:

echo htmlentities($string);

显示浏览器上的字符串。这是因为浏览器将字符串中的<解释为HTML标记的开头。

所以它不是PHP而是导致此行为的浏览器。如果在命令行上执行完全相同的显示,则会看到所有字符。

答案 3 :(得分:1)

如果您在Web浏览器中查看输出,则<开始标记,并且通常不会显示,而是在HTML文档结构解析器中进行解释。此外,双引号字符串中的$被内插为其后面的变量名称;尝试使用单引号,这不会发生。

试试这个:

$string = '!@#$%^&*(<a@g.com';
echo htmlentities($string);