我有这个数组:
'@(.*?)<div>(.*?)</div>(.*?)@i' => 'ok'
我正在使用 preg_replace 从某个字符串返回值“ok”。
问题是当我做 preg_replace 时,最后一个 (.*?)
没有“检测到”。
例子
我有字符串:test1<div>test2</div>test3
使用该数组和 preg_replace,它将返回oktest3
. 为什么不替换 test3?
我有这个数组:
'@(.*?)<div>(.*?)</div>(.*?)@i' => 'ok'
我正在使用 preg_replace 从某个字符串返回值“ok”。
问题是当我做 preg_replace 时,最后一个 (.*?)
没有“检测到”。
例子
我有字符串:test1<div>test2</div>test3
使用该数组和 preg_replace,它将返回oktest3
. 为什么不替换 test3?
问题是,这.*?
是一个非贪婪匹配,因此尝试尽可能少地匹配。
如果您希望它从字符串的开头和结尾匹配,请使用^
and$
将正则表达式锚定到开头和结尾,如下所示:
'@^(.*?)<div>(.*?)</div>(.*?)$@i' => 'ok'