PHP

TP升级框架后报错preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead

字号+ 编辑: 种花家 修订: 种花家 来源: 网络转载 2023-09-11 我要说两句(0)

preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead xxx/Core/Lib/Core/Db.class.php 第 601 行.

Thinkphp这个框架因为年头比较久了, 老式的3.0框架代码很多不能正确兼容>=5.6以上的版本。比较突出的就是Db.class.php这个文件里的正则。

php7.1之后的preg_replace函数会报错The /e modifier is no longer supported, 怎么解决? 这里笔者举个例子说明:

先找到这段代码:

protected function parseJoin($join) {
...
//将__TABLE_NAME__这样的字符串替换成正规的表名,并且带上前缀和后缀
$joinStr = preg_replace("/__([A-Z_-]+)__/esU", C("DB_PREFIX") . ".strtolower('$1')", $joinStr);
}

把$joinStr变量这一行改成下方这个样子

$joinStr = preg_replace_callback("/__([A-Z_-]+)__/sU", function ($match) {
return C("DB_PREFIX") . strtolower($match[1]);
}, $joinStr);

错误解决。说一大堆不如直接看代码, 你Get到了吗?

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • PHP的换行符是什么

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上宾友点评