PHP 字符串中的 & 符号

问题描述 投票:0回答:5

我遇到了一点问题。我正在尝试创建一个 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
。有什么建议吗?

php string echo
5个回答
7
投票

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

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

您将输出打印到什么环境?听起来您正在 Web 浏览器中查看它,并且 & 被解释为格式错误的 HTML 实体。尝试用实体编码版本替换 & 符号

&amp;


6
投票

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

如果您希望它以 HTML 格式正确打印,请在其上运行 htmlentities 或制作 &

&amp;


1
投票

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


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>

现在,如您所见,& 符号本身具有特殊含义,因此需要转义为 &。 htmlspecialchars() 会为你做的。


0
投票

Ao enviar os dados para o ajax 使用:

encodeURIComponent(Txt);

© www.soinside.com 2019 - 2024. All rights reserved.