在PHP中,当你写一个集合等于一个用重音符包裹的字符串的变量时,它将像在shell_exec()
命令内一样被执行。严重的重音符号(`)(不是单引号)在PHP中代表什么?
因此,在php中,你可以做各种事情来将字符串与变量结合起来,等等,使用`代替'或“时,我可以做什么,也不能做什么?
在PHP中,该字符称为反引号运算符。
用反引号引起来的文字字符串是一个T_ENCAPSED_AND_WHITESPACE
标记。你可以通过运行以下命令来确认这一点:
print_r(token_get_all('<?php `uname`;'));
这给你这个:
Array
(
[0] => Array
(
[0] => 367
[1] => <?php
[2] => 1
)
[1] => `
[2] => Array
(
[0] => 313
[1] => uname
[2] => 1
)
[3] => `
[4] => ;
)
然后运行token_name(313)
,它会给你T_ENCAPSED_AND_WHITESPACE
。
对于解析器而言,用反引号引起来的字符串等效于其中包含变量的字符串,例如"hello $world"
。字符串的文字/常量部分(hello
部分)为T_ENCAPSED_AND_WHITESPACE
。
因此,要回答你的问题,你可以对包含变量的字符串执行的任何操作,都可以对反引号中包含的字符串执行的操作。
那为什么T_ENCAPSED_AND_WHITESPACE
呢?可能是因为像包含变量的字符串一样,它的值是在运行时确定的。而T_CONSTANT_ENCAPSED_STRING
(正常的文本字符串)是一种像在解析器眼中的常数。