在 PHP 中使用 preg_match 时出现“未知修饰符‘g’ in...”?

问题描述 投票:0回答:2

这是我尝试使用的正则表达式:

/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim

我在这个网站上找到了它,当我在那里尝试时它效果很好。但是,一旦我将其放入代码中,我就会收到以下消息:

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22

任何人都可以解释一下出了什么问题,以及为什么它在该网站上运行而不是在我的代码中运行?

php regex preg-match preg-match-all
2个回答
224
投票

g
 没有修饰符 
preg_match
。相反,您必须使用
preg_match_all
函数。

所以代替:

preg_match("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim", ....)

用途:

preg_match_all("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....)

0
投票

这是我用的正则: (选择|删除)(?:\s*/*.*/\s?)\s+FROM\s+([^\s/;]+)?|(?:(?:(创建|更改|删除)(?:(?:\s/*.*/\s?)\s+OR(?:\s/*.*/\s?)\ s+(替换))?)(?:\s/*.*/\s?)\s+TABLE(?:(?:\s/*.*/\s?) \s+IF(?:\s/*.*/\s?)\s+EXISTS)?|(更新)|(更改)|(插入)(?:\s/*. */\s?)\s+(?:INTO?))(?:\s/*.*/\s?)\s+([^\s/;]+)|( ?:(替换)(?:\s*/*.*/\s?)\s+(?:INTO?))(?:\s/*.*/\s?) \s+([^\s/;]+)(?:\s*/*.*/\s?)\s+([^\s/;]+)

© www.soinside.com 2019 - 2024. All rights reserved.