0

なぜこれが私が思ったところで止まらないのか理解できません。

これが文字列の例です。

<div class="blah"><a href="www.foo.bar">foo bar</a></div>
<div class="blah2"><span><a href="www.bar.foo">bar foo</a></span></div>

このグループ化は何度も繰り返されるため、次を使用しています。

preg_match('@<div class="blah">.*</span></div>@', $page, $matches);

機能しますが、一度に 1 つずつではなく、一度にすべてのグループを取得します。ここで簡単なものが欠けていますか?

ありがとうございました。

4

2 に答える 2

4

試す:

<div class="blah">.*?</span></div>

.*.*貪欲に一致するため、残りの正規表現と一致する前に、 その範囲内にできるだけ多くをカプセル化します。.*?しぶしぶ一致するため、正規表現の残りの部分に進む前に、一致するものをできるだけ少なくします。

于 2013-01-30T00:27:59.163 に答える
1

もう 1 つの解決策はU( PCRE_UNGREEDY) オプションを使用することです。これにより、デフォルトですべての検索が ungreedy になります。

preg_match('@<div class="blah">.*</span></div>@U', $page, $matches);
于 2013-01-30T00:33:38.430 に答える