警告:preg_replace():未知的修饰符'g'

时间:2013-09-27 22:25:36

标签: php regex

这个正则表达式出错了。

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

错误

  

警告:preg_replace():....中的未知修饰符'g'

为什么?

3 个答案:

答案 0 :(得分:136)

g隐含preg_replace(),您不需要包含它。

答案 1 :(得分:36)

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

  

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

因此,除非您为此参数指定正数,否则它将默认替换所有匹配项:

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

答案 2 :(得分:-1)

在替换

的字符串中有一个/之前的字母G.