解決 PHP 報 ErrorException: preg_match(): Compilation failed: invalid range in character class at offset ... 錯誤


某天,運營跑過來說網站的郵件發送驗證碼用不了了,作為開發人員,我們解決問題就是我們的本分工作。

首先排查錯誤日志,立馬就發現 PHP 報了個錯誤:

ErrorException: preg_match(): Compilation failed: invalid range in character class at offset 4

錯誤內容是說正則驗證格式錯誤了,需要進行修改,但是我們在之前的開發及使用過程中並沒有出現問題,而是最近發現的。

這就讓我們摸不着頭腦了,直到我們發現服務器的 PHP 版本不知道什么時候從 7.2 換成了 7.3!

有了差異之后,我們找到了問題原因:

  1. PHP 從 7.2 升級到 PHP 7.3
  2. 正則驗證格式編寫不規范

解決方法也很簡單:

  1. 升級 PHP 版本(可以不做,但建議保持與服務器統一)
  2. 注意正則格式特殊字符有沒有做轉義,比如 [] 中的 - 需要做轉義: \-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM