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.交流群: 2702237 13835667

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • PHP的換行符是什麽

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評