字符串中的PHP&符号

时间:2010-06-17 23:02:00

标签: php string echo

我遇到了一些问题。我正在尝试创建一个IRC机器人,其密码中有一个&符号。但是,我无法将&符号放入字符串中。例如......

<?php

$var = "g&abc123";

echo $var;

?>

我认为这应该打印g&abc123。但它正在打印g

我也试过这个:

<?php
$arr = array("key" => "g&abc123");
print_r($arr);
?>

这会使用g&abc123正确打印,但是当我说echo $arr['key'];时,它会再次打印g。任何帮助,将不胜感激。我正在运行PHP5.3.1。

编辑:另外,我注意到如果我使用g&abc123&abc123,则会打印g&abc123。有什么建议吗?

4 个答案:

答案 0 :(得分:6)

查看源代码,它将打印正确的代码。

如果您希望在HTML中正确打印出来,请在其上运行htmlentities或制作&amp; &amp;

答案 1 :(得分:6)

我在控制台中没有这个问题:

php > $d="g&abc123";
php > echo $d;
g&abc123

您将输出打印到什么环境?这听起来像是在网络浏览器中查看它,并且&amp;被解释为格式错误的HTML实体。尝试更换&amp;具有实体编码版本&amp;的符号。

答案 2 :(得分:1)

查看网页来源以确保您的变量包含正确的值。

答案 3 :(得分:1)

您可能正在将输出发送到Web浏览器。

正确的做法是

在HTML,XHTML和XML中,&符号具有特殊含义。它用于角色实体。你可以把它想象成各种各样的转义序列。

例如,在PHP中,这将是非法的:

$variable = 'It's Friday';

这是因为撇号被PHP解释为字符串的结尾,而其余内容看起来像垃圾。

相反,你必须说:

$variable = 'It\'s Friday';

同样,在HTML和XHTML中,你不能说

<h1>Inequalities</h1>
<p> x<yz+3 </p>

这是因为它会被解释为一个元素。

相反,你必须说:

<h1>Inequalities</h1>
<p> x&lt;yz+3 </p>

现在,正如您所看到的,&符号本身具有特殊含义,因此需要作为&amp ;.进行转义。 htmlspecialchars()会为你做。