当前位置: 首页 > 知识库问答 >
问题:

在PHP中使用preg_match时,“…中的未知修饰符'g'”?

夹谷琨
2023-03-14

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

/^(\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

有谁能解释一下哪里出了问题,为什么它是在那个网站上工作的,而不是在我的代码中?

共有1个答案

毛博
2023-03-14

preg_match没有修饰符g。相反,您必须使用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", ....)
 类似资料:
  • 问题内容: 好吧,所以我目前正在解析RSS feed。我已经获得了我没有问题的数据,剩下的只是解析游戏名称。 这是我当前拥有的代码(忽略草率,这只是概念的证明): 一切都很好,但是随后我开始出现此错误: 我剩下的唯一一件事就是剔除结束锚标签和句点,但是我似乎无法弄清楚为什么它不喜欢’+’。有任何想法吗? 编辑:这不应被标记为重复,因为在另一个问题问了两年之前就被问到了。 问题答案: 您需要在PHP

  • 问题内容: 我正在尝试使用preg_match返回页面源代码中所有包含在“”中的URL。 我正在使用的代码是 我收到以下错误: 问题答案: preg_match(‘~”http://(.*)”~iU’, $code, $matches); 您的问题是您需要使用定界符(我选择〜)来与模式一起使用。有关更多信息,请参见preg_match()手册页。

  • 问题内容: preg_replace(‘/http:///ftp:///', ‘https://’, $value); 和内应改为 此代码给出错误: 什么是此任务的真正正则表达式? 问题答案: 尝试使用其他定界符,例如: 或(不建议使用)对正则表达式中每次出现的定界符进行转义: 另外,您正在搜索的确没有太大意义的模式,可能就是您的意思。 您可以将正则表达式缩短为: 了解错误: 在您的regex中,

  • 问题内容: 我有以下错误: 警告:preg_replace():第38行上xxx.php中的未知修饰符’]’ 这是第38行的代码: 我该如何解决这个问题? 问题答案: 为什么会发生错误 在PHP中,正则表达式需要包含在一对定界符内。分隔符可以是任何非字母数字,非反斜杠,非空格字符;,,是最常用的。需要注意的是,还可以使用支架风格分隔符在打开和关闭括号开始和结束的分隔符,即,等等都是有效的。 在以下

  • 问题内容: 这个问题已经在这里有了答案 : [警告:preg_replace():未知修饰符“]” ](file:///C:/questions/20705399/warning-preg- replace-unknown-modifier) (3个答案) 11个月前关闭。 当我写以下内容时,我得到这样的警告,它与任何内容都不匹配,但是我敢肯定,其中包含… 为什么我会收到这样的警告消息? 谢谢 问

  • 问题内容: 在Java中,有一种做法是声明每个变量(局部变量或类),如果参数确实存在,则声明参数final。 尽管这使代码更加冗长,但是这有助于简化代码的读取/抓取,并且由于意图被明确标记,因此还可以防止错误。 您对此有何想法,您会怎么做? 问题答案: 我认为这都与良好的编码风格有关。当然,你可以编写出色而健壮的程序,而无需在任何地方使用很多修饰符,但是当你考虑一下时… 将所有不应该改变的东西加进