为什么这行代码不需要转义引号

时间:2015-08-22 06:21:39

标签: php escaping

我正在学习PHP教程,并且遇到了这行代码

redirect_to("manage_content.php?subject={$current_subject["id"]}");

我很惊讶地看到这种方法无需绕过" id"在括号内。

但我不明白为什么。有谁知道吗?

1 个答案:

答案 0 :(得分:3)

当你在花括号{}中包装变量时,PHP解析器会知道里面的任何变量,并且不会像字符串的其余部分一样解析它!

这仅适用于双引号中的字符串 - 单引号字符串采用面值,因此必须进行转义:

$str = 'My cool string! {$array[\'key\']}';

虽然你的例子没有。

因此,将静态字符串放在单引号中是一种最佳实践 - 它是一种微优化,但从技术上来说,它更快一点,因为PHP解析器没有必须通过字符串!