我遇到了一些问题。我正在尝试创建一个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
。有什么建议吗?
答案 0 :(得分:6)
查看源代码,它将打印正确的代码。
如果您希望在HTML中正确打印出来,请在其上运行htmlentities或制作&amp; &
答案 1 :(得分:6)
我在控制台中没有这个问题:
php > $d="g&abc123";
php > echo $d;
g&abc123
您将输出打印到什么环境?这听起来像是在网络浏览器中查看它,并且&amp;被解释为格式错误的HTML实体。尝试更换&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<yz+3 </p>
现在,正如您所看到的,&符号本身具有特殊含义,因此需要作为&amp ;.进行转义。 htmlspecialchars()会为你做。