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 升級後收到「preg_match(): 編譯失敗:字元類別中的範圍無效」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!