有没有办法动态替换函数,类似于.replace
在JavaScript中的工作方式?一个类似的用例是我有一个带数字的字符串,我想通过函数传递数字:
"1 2 3" => "2 4 6" (x2)
当前preg_replace
函数似乎不支持参数的函数。
作为参考,在JavaScript中它可以实现如下:
var str = "1 2 3";
str.replace(/\d+/g, function(num){
return +num * 2;
});
答案 0 :(得分:2)
您应该使用具有正则表达式匹配回调的preg_replace_callback()
。您可以在回调函数中乘以匹配的数字。
$newStr = preg_replace_callback("/\d+/", function($matches){
return $matches[0] * 2;
}, $str);
检查demo
中的结果