PHP 如果在双引号中靠近变量,则不会转义括号

PHP won't escape brackets if near variable in double quote

我正在编写 PHP 代码,其中有很多可变字符串连接,我想使用双引号,如果括号在变量旁边,我无法正确打印它们。

所以,这按预期工作:

$first = 'Ani';
$second = 'ma';
$third = array( 'ing', 'ted', 'tion' );
$variable = "$first$second{$third[2]}";
echo $variable;

>> Animation

但如果我希望字符串中包含括号文字,这就是我得到的结果:

$var1 = 'red';
$var2 = 'blue';
$var3 = 'green';
$variable = "x = {$var1,$var2,$var3}";
echo $variable

>> PHP Parse error:  syntax error, unexpected token ",", expecting "->" or "?->" or "{" or "["

换句话说,PHP 正在使用方括号进行变量解析,但我只想按字面意思对待它。当我转义括号时,它会打印但带有转义字符:

$variable = "x = \{$var1,$var2,$var3\}";
echo $variable

>> x = \{red,blue,green\}

我可以使用双引号并在变量旁边正确打印文字括号吗?否则,它会使我的代码变得更加混乱和耗时。

$var1 = 'red';
$var2 = 'blue';
$var3 = 'green';
$variable = "x = {$var1,$var2,$var3}";
echo $variable;

将输出:

x = {$var1,$var2,$var3}

如果您需要以下内容: x = {red,green,blue}

你不能,“因为{无法转义”。资料来源:https://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex