$end = preg_replace($pattern, $replacement, $str);
如何使替换字符串$ replacement因$ str中的每个匹配而异?例如,我想用关联的图像替换每个匹配的字符串。关于回调的事情......对吧?
答案 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
修饰符进行内联。