Php 如何使用preg_match替换阵列

Php 如何使用preg_match替换阵列,php,regex,Php,Regex,我有一段文字: foo{{bar}}foo{{bar}}foo 我有一个数组: $bar[0] = 'lol'; $bar[1] = 'kek'; 呃,我想发一条短信: foo lol foo kek foo 这: 不起作用。您可以通过迭代替换数组,使用limit参数来防止每次替换超过1个值,从而获得所需的结果: foreach ($bar as $b) { $string = preg_replace('/{{bar}}/usi', $b, $string, 1); } echo

我有一段文字:

foo{{bar}}foo{{bar}}foo

我有一个数组:

$bar[0] = 'lol';
$bar[1] = 'kek';
呃,我想发一条短信:

foo lol foo kek foo

这:


不起作用。

您可以通过迭代替换数组,使用
limit
参数来防止每次替换超过1个值,从而获得所需的结果:

foreach ($bar as $b) {
    $string = preg_replace('/{{bar}}/usi', $b, $string, 1);
}

echo $string;
输出:

foo lol foo kek foo

另一个想法将与您一起提出

  • 要从回调函数内部修改
    $bar
    ,它是
    &

  • 为了让匿名回调函数工作,您可能需要PHPV5.4+

foo lol foo kek foo
$res = preg_replace_callback('/{{bar}}/', function($m) use (&$bar) {
  return array_shift($bar);
}, $str);