警告:preg_replace():未知修饰符“g”

Posted

技术标签:

【中文标题】警告:preg_replace():未知修饰符“g”【英文标题】:Warning: preg_replace(): Unknown modifier 'g' 【发布时间】:2013-10-04 08:34:57 【问题描述】:

这个正则表达式出错了...

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~gim ' , "</CharacterStyleRange>", $strTmp);

错误

警告:preg_replace(): Unknown modifier 'g' in ....

为什么?

【问题讨论】:

【参考方案1】:

g 隐含在 preg_replace() 中。你不需要包含它。

【讨论】:

请参阅the other good answer 了解更多背景信息。【参考方案2】:

您不必指定全局标志。从 the documentation 开始,有一个单独的参数 ($limit) 用于指定要进行的替换次数:

限制 每个主题字符串中每个模式的最大可能替换。默认为 -1(无限制)。

所以,除非你为这个参数指定一个正数,否则它会默认替换所有出现的:

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~im ' , "</CharacterStyleRange>", $strTmp);

【讨论】:

【参考方案3】:

在您要替换的字符串中的字母 G 之前有一个 /

【讨论】:

这只是为我抛出了那个错误“Glasshouse Images/Getty Images”我的猜测是 preg_ 认为这是一个转义字符

以上是关于警告:preg_replace():未知修饰符“g”的主要内容,如果未能解决你的问题,请参考以下文章

警告:preg_replace():未知修饰符“h”

未知修饰符 '/' preg_replace()

我在字符串上有几个 preg_replace 未知修饰符警告,但我不知道正则表达式修复 [重复]

php新版本号废弃 preg_replace /e 修饰符

关于thinkhphp3.1中废弃 preg_replace /e 修饰符

我的代码中的未知修饰符[重复]