揭开“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 函数中将 'g' 修饰符替换为 'm' 修饰符,您的代码将按预期运行,匹配多次出现的输入字符串中指定的电子邮件地址模式。
以上是为什么我会收到'preg_match 中未知的修饰符'g'”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!