您好我最近搬到了PHP 5.6,现在从phpBB3安装中得到了一些弃用的错误。令人讨厌的代码行是:
$tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
有人可以建议如何将其转换为preg_replace_callback吗?
答案 0 :(得分:1)
我只是设法将表达式转换为新格式,我不是一个php向导,所以我为它感到有点自豪!
这是我写的删除错误消息(bbcode.inc第494行):
$tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($m) { return (!empty($user->lang['\$m[1]'])) ? $user->lang['\$m[1]'] : ucwords(strtolower(str_replace('_', ' ', '\$m[1]'))); }, $tpl);
在第370行的bbcode.inc中还有另一条类似的行,可以用完全相同的方式进行转换,但第113行中的那行,我无法修复......
显然因为模式来自一个变量,所以需要花一点时间来计算一个变量。