89

我得到这个正则表达式的错误......

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

错误

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

为什么?

4

3 回答 3

182

g是隐含的preg_replace()。你不需要包括它。

于 2013-09-27T22:27:01.333 回答
50

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

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

因此,除非您为此参数指定一个正数,否则它将默认替换所有出现:

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~im ' , "</CharacterStyleRange>", $strTmp);
于 2013-09-27T22:28:12.757 回答
-2

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

于 2018-06-14T05:29:12.410 回答