替换preg_replace e修饰符

时间:2016-01-06 16:14:20

标签: php deprecated

我正在做一个旧项目工作并获得大量这些:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead

看第74行:

$str = preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})",$str);

如何将其转换为使用新回拨?

1 个答案:

答案 0 :(得分:2)

轻松。

$str = preg_replace_callback('/&#(\d+);/', function($m) use ($lo) {
    return code2utf($m[1],$lo);
}, $str);

这里重要的是use ($lo),因为它允许您将$lo变量“导入”回调。

我还清理了你的正则表达式 - 太多的反斜杠;)