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

preg_replace cannot perform simple math in the replacement

提问人:Jeff 提问时间:8/5/2012 最后编辑:nickbJeff 更新时间:8/5/2012 访问量:257

问:

我尝试了各种不同的序列和逃跑,但没有运气。Preg_replace忽略了 并在 as 替换后使用整数。$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

php 正则表达式 preg-replace

评论


答:

1赞 nickb 8/5/2012 #1

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

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

评论

0赞 Jeff 8/5/2012
哦,为了爱...这是preg_的要求,还是在 php.net 文档的其他地方讨论过?
0赞 nickb 8/5/2012
这是工作中的运算符优先级,任何字符串都会发生。