用 PHP 中的函数动态替换
Dynamically Replacing by a Function in PHP
有没有办法用函数动态替换,类似于 .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;
});
您应该使用具有正则表达式匹配回调的 preg_replace_callback()
。您可以在回调函数中将匹配数字相乘。
$newStr = preg_replace_callback("/\d+/", function($matches){
return $matches[0] * 2;
}, $str);
检查结果 demo
有没有办法用函数动态替换,类似于 .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;
});
您应该使用具有正则表达式匹配回调的 preg_replace_callback()
。您可以在回调函数中将匹配数字相乘。
$newStr = preg_replace_callback("/\d+/", function($matches){
return $matches[0] * 2;
}, $str);
检查结果 demo