首頁 > 後端開發 > php教程 > 為什麼我在 PHP 升級後收到「preg_match(): 編譯失敗:字元類別中的範圍無效」?

為什麼我在 PHP 升級後收到「preg_match(): 編譯失敗:字元類別中的範圍無效」?

Barbara Streisand
發布: 2024-12-09 21:48:15
原創
882 人瀏覽過

Why Am I Getting

PHP 升級後字元類別中的範圍無效

此錯誤,「preg_match(): 編譯失敗:偏移處字元類別中的範圍無效20,」通常發生在PHP 升級對PCRE 引擎或您的應用程式中使用的Unicode 引擎進行更改時。

PHP PCRE2 遷移

PHP 7.3 及更高版本使用 PCRE2,它引入了一些向後不相容的變更。其中一項變更是對字元類模式進行更嚴格的驗證。

字元類別中的連字號

以前,您可以轉義連字號 (-) 並在字串中的任何位置使用它。字元類。但是,從 PHP 7.3 開始,您必須只將連字符放在字元類別的開頭或結尾。

解決方案

要解決此錯誤,請確保連字符 (-) 在字符類中正確放置。如果需要在類別中使用連字符作為字符,則必須對其進行轉義(例如 -)。

// Invalid (in PHP 7.3+)
preg_match("/^[a-z0-9]([0-9a-z_\-\s])+$/i", $subuser);

// Valid (in PHP 7.3+)
preg_match("/^[a-z0-9]([0-9a-z\-_\s])+$/i", $subuser);
登入後複製

其他注意事項

  • 會影響某些無效模式的行為。
  • 確保您的程式碼對字元類別使用正確的連字符位置,以避免編譯錯誤。
  • 有關更多詳細信息,請參閱 PHP 文件關於這些更改和兼容性問題。

以上是為什麼我在 PHP 升級後收到「preg_match(): 編譯失敗:字元類別中的範圍無效」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板