phpbb preg_replace不推荐使用的错误

时间:2015-04-25 14:28:25

标签: preg-replace deprecated phpbb

您好我最近搬到了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吗?

1 个答案:

答案 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行中的那行,我无法修复......

显然因为模式来自一个变量,所以需要花一点时间来计算一个变量。