1

私はこの配列を持っています:

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

そして、文字列から値「ok」を返すために preg_replace を使用しています。

問題は、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 に答える