1

我有这个数组:

'@(.*?)<div>(.*?)</div>(.*?)@i' => 'ok'

我正在使用 preg_replace 从某个字符串返回值“ok”。

问题是当我做 preg_replace 时,最后一个 (.*?)没有“检测到”。

例子

我有字符串:test1<div>test2</div>test3

使用该数组和 preg_replace,它将返回oktest3. 为什么不替换 test3?

4

1 回答 1

4

问题是,这.*?是一个非贪婪匹配,因此尝试尽可能少地匹配。

如果您希望它从字符串的开头和结尾匹配,请使用^and$将正则表达式锚定到开头和结尾,如下所示:

'@^(.*?)<div>(.*?)</div>(.*?)$@i' => 'ok'
于 2013-06-28T17:44:11.070 回答