代码之家  ›  专栏  ›  技术社区  ›  John M.

字符串中的PHP符号

  •  7
  • John M.  · 技术社区  · 14 年前

    我有点问题。我正在尝试创建一个IRC bot,它的密码中有一个与号。但是,我很难把符号放在一个字符串中。例如。。。

    <?php
    
    $var = "g&abc123";
    
    echo $var;
    
    ?>
    

    我想这应该印出来 g&abc123 g .

    我也试过这个:

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

    它用 g&abc123型 但是当我说 echo $arr['key']; 再一次。任何帮助都将不胜感激。我正在运行PHP5.3.1。

    :另外,我注意到如果我使用 g&abc123&abc123 . 有什么建议吗?

    4 回复  |  直到 11 年前
        1
  •  6
  •   JAL    14 年前

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

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

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

        2
  •  6
  •   Kerry Jones    14 年前

    看一下源代码,就会打印出正确的代码。

    如果希望它以HTML格式正确打印,请在其上运行htmlentities或使; &amp;

        3
  •  1
  •   Anax    14 年前

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

        4
  •  1
  •   MapDot    14 年前

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

    正确的方法是

    在HTML、XHTML和XML中,符号and有特殊的含义。它用于字符实体。你可以把它看作是某种转义序列。

    例如,在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>