preg_replace无法在替换中执行简单的数学运算

时间:2012-08-04 19:19:42

标签: php regex preg-replace

我尝试了各种不同的序列和逃避,但没有运气。 Preg_replace忽略$i并在+替换后使用整数。

第一个例子:

$i = 1;
$s = preg_replace( '/\[$/', '${' . $i + 1 . ':[', $s );
var_dump( $s );

结果:${1:[ // should be 2

第二个例子:

$i = 1;
$s = preg_replace( '/\[$/', '${' . $i + 9 . ':[', $s );
var_dump( $s );

结果:${9:[ // should be 10

没有添加它可以正常工作:

$i = 12;
$s = preg_replace( '/\[$/', '${' . $i . ':[', $s );
var_dump( $s );

结果:${12:[ // okay

1 个答案:

答案 0 :(得分:1)

您需要使用括号对表达式进行分组,以便在连接之前进行添加。

$s = preg_replace( '/\[$/', '${' . ($i + 1) . ':[', $s );