替换和检索占位符值

Replace and retrieve placeholder value

有什么方法可以比下面的代码更有效地替换一个值并在同一字符串中检索另一个值,例如组合 preg_replace()preg_match() 的方法?

$string = 'abc123';
$variable = '123';
$newString = preg_replace("/(abc)($variable)/",'xyz', $string);
preg_match("/(abc)($variable)/", $string, $matches);
$number = $matches[2];

您可以使用一次调用 preg_replace_callback() 并在回调函数的代码中更新 $number 的值:

$string = 'abc123';
$variable = '123';

$number = NULL;
$newString = preg_replace_callback(
    "/(abc)($variable)/", 
    function ($matches) use (& $number) {
        $number = $matches[2];
        return $matches[1].$matches[2].'xyz';
    },
    $string
);

我不认为速度有很大提升。唯一的优势可能是可读性。