提问人:Jeff 提问时间:8/5/2012 最后编辑:nickbJeff 更新时间:8/5/2012 访问量:257
preg_replace无法在替换中执行简单的数学运算
preg_replace cannot perform simple math in the replacement
问:
我尝试了各种不同的序列和逃跑,但没有运气。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
答:
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
这是工作中的运算符优先级,任何字符串都会发生。
评论