揭開「preg_match 中的未知修飾符'g'」背後的秘密
在PHP 中使用preg_match 函數處理正式表達式時,您可能會遇到一條錯誤訊息,指出「未知修飾符'g'」。此問題與您使用的正規表示式中的語法不正確有關。
問題
您嘗試使用的正規表示式包含「g」 preg_match 函數無法辨識的修飾符(例如 /regex/gim)。雖然某些線上正規表示式測試網站可能允許使用「g」修飾符,但 PHP 在這種情況下不支援它。
解決方案
要解決此問題,您可以使用 preg_match_all 函數來代替,它支援 'g' 修飾符來匹配模式的多次出現。 'g' 修飾符引入了全域搜索,指示該函數應該迭代整個字串並匹配模式的所有出現。
範例
而不是:
preg_match("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim", ....)
使用:
preg_match_all("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....)
透過在preg_match_all 函數中將' ' 修飾符替換為'm' 修飾符,您的代碼將按預期運行,匹配多次出現的輸入字串中指定的電子郵件地址模式。
以上是為什麼我會收到'preg_match 中未知的修飾符'g'”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!