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交易參數有誤,該筆交易暫時無法完成,請聯系商家解決

我要說說
網上賓友點評