我阅读了关于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>";
我的问题是单引号确实解释了\'转义字符。那么为什么第一个代码不显示双引号(放在单引号内)。我缺少什么?
答案 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>";