双引号内的单引号

时间:2014-01-07 14:33:53

标签: php quote

我阅读了关于PHP的字符串文档,发现单引号字符串几乎完全“按原样”显示。除了\'和\\

之外,不会解释变量和大多数转义序列

我想显示一个地址应为http://localhost/kk/insert.php/?id="4"

的超链接

我尝试了以下代码

$id = 4;
echo "<a href='http://localhost/kk/insert.php/?id=".$id."'>edit</a>";

但它正在显示http://localhost/kk/insert.php/?id=4(4周围没有双引号)

但是,我使用

完成了结果
echo "<a href='http://localhost/kk/insert.php/?id=\"$display_result\"'>edit</a>";

我的问题是单引号确实解释了\'转义字符。那么为什么第一个代码不显示双引号(放在单引号内)。我缺少什么?

4 个答案:

答案 0 :(得分:3)

整数周围不应该有引号。你的网址应该是 http://localhost/kk/insert.php/?id=4 这是使用以下代码完成的:

$id = 4;
echo '<a href="http://localhost/kk/insert.php/?id='.$id.'">edit</a>';

答案 1 :(得分:1)

你在那里处理两种语言。 PHP正在执行回声,PHP会解析/删除"引号。然后是'引号,它们在HTML中用于分隔href属性。

使用转发的第二个版本:

echo "<a href='http://localhost/kk/insert.php/?id=\"$display_result\"'>edit</a>";
     ^--php   ^--html                             ^^--escaped for PHP

通常"之前的$display_result会终止你一直在回应的PHP字符串。但由于它已被转义(\"),因此转义告诉PHP将该引用视为纯文本,而不是引用。所以PHP字符串继续,当这段代码实际执行并从服务器输出时,浏览器实际上会看到:

<a href='http://localhost/kk/insert.php/?id="XXX"'>edit</a>

答案 2 :(得分:1)

您发现的单引号和双引号之间的解释差异是:

$a = 4;
echo '$a' . "$a"; // $a4
// '$a' just prints `$a`
// "$a" prints `4`, it's interpretted
// alternatively "\$a" prints `$a`

至于逃避。如果您的字符串分隔符是单引号,那么您不需要转义双引号,反之亦然。

$a = "don't";
// vs
$a = 'don\'t';

$a = '"quote"';
// vs
$a = "\"quote\"";

答案 3 :(得分:0)

要使用您的第一个示例,请执行以下操作:

$id = 4;

echo "<a href='http://localhost/kk/insert.php/?id=\"".$id."\"'>edit</a>";