带有逻辑的PHP preg_replace?

时间:2012-08-13 18:03:18

标签: php regex string

如果我想将所有数字乘以2怎么办?这可以用正则表达式替换吗?请注意显然不起作用的$1*2部分。我该怎么做?

$foo = "soup 12 cake 23 pants";
$bar = preg_replace('~(\d+)~', $1*2, $foo);

2 个答案:

答案 0 :(得分:3)

您可以使用preg_replace_callback

preg_replace_callback('~(\d%)~', function($match) { return $match[1]*2; }, $foo);

答案 1 :(得分:2)

尝试使用preg_replace_callback(...)函数

<?php

function mulBy2($match) {
    return $match[1] * 2;
}

$foo = "soup 12 cake 23 pants";
$bar = preg_replace_callback('~(\d+)~', "mulBy2", $foo);

echo $bar;

?>