使用 preg_replace() 出现意外结果


Unexpected result with preg_replace()

$subject = "'foo' = 'bar'";
$pattern = "/('foo' = ').*(')/";
$var = "123baz";
$replacement = "$1$var$2";
print_r(preg_replace($pattern, $replacement, $subject));

结果是23baz'而不是'foo' = '123baz'。为什么以及如何解决此问题?

认为您正在寻找类似这样的东西:

$subject = "'foo' = 'bar'";
$pattern = "/(= ').*(')/";
$var = "123baz";
$replacement = "= '$var'";
print_r(preg_replace($pattern, $replacement, $subject));

输出:

'foo' = '123baz'