PHP动态preg_replace

时间:2012-01-19 02:04:20

标签: php preg-replace

$end = preg_replace($pattern, $replacement, $str);

如何使替换字符串$ replacement因$ str中的每个匹配而异?例如,我想用关联的图像替换每个匹配的字符串。关于回调的事情......对吧?

2 个答案:

答案 0 :(得分:3)

您需要在模式字符串中使用preg_replace_callback/e修饰符。第一个更强大,但如果你只是在相对简单的事情之后,第二个更方便。

答案 1 :(得分:3)

是的,有回调的东西。特别是preg_replace_callback,这使得重复调用变得多余。有关要替换的事项列表:

 $src = preg_replace_callback('/(thing1|thing2|thing3)/', 'cb_vars', $src);

回调可以进行某种形式的查找或转换:

 function cb_vars($m) {
     return strtoupper($m[1]);
 }

同样,您可以使用普通preg_replace/e修饰符进行内联。