字符串末尾的&符号在浏览器中不可见

时间:2009-12-07 08:29:18

标签: php echo

我打印一个字符串,如下所示

代码:

echo "&words=".$rs['pw']."&"; 

输出:

  

&安培;词语=帮助|良好

请注意,最后&未打印。

但是当我在&之后添加空格字符时,它会打印如下

代码:

echo "&words=".$rs['pw']."& "; 

输出:

  

&安培;词语=帮助|良好&安培;

现在打印&

为什么会发生这种情况并说明这种行为的原因?

3 个答案:

答案 0 :(得分:4)

如果您要将其输出到网络浏览器,那么您应该将其输出到&使用&“&”在HTML中使用很多来转义字符串,而在URL中则是一个特殊的字符串,例如<>等

答案 1 :(得分:1)

此代码适用于我

$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";

输出

  

&安培;词语=帮助|良好&安培;

这引出了一个问题:背景是什么?这段代码输出在哪里,您是在网络服务器上运行它还是在浏览器中查看?是否没有其他代码可以导致这种情况?

如果上下文类似于在HTML中输出,那么您需要确保它在正确的位置。在HTML&符号是特殊的,你应该逃避它。通常这意味着转换为&

答案 2 :(得分:1)

如果您在网页中输出,则浏览器会将&解释为特殊。在浏览器中选择“查看源代码”,您将看到原始输出。如果您需要它出现在html上下文中,则必须在打印之前将字符串传递给htmlspecialchars。所以:

$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");