解析する次の html があります。
<h1 class="x">test</h1>
<p>some text <img src="x" /></p>
<h1 class="x1">test2</h1>
<p>some text </p>
<h1 class="2">test3</h1>
<p>some text <img src="x" /></p>
これを単一の正規表現で配列に解析できますか?
私は試した
preg_match_all('#(<h1[^>]*?>)(.*?)(</h1>)(.*)#ism',$html,$arr);
正規表現の最後の部分が貪欲であるため、エントリは 1 つしかありません。
preg_match_all('#(<h1[^>]*?>)(.*?)(</h1>)(.*?)#ism',$html,$arr);
<h1>
式が貪欲ではないため、 の間の HTML については何もわかりません。
可能な限り多くのオカレンスを一致させながら、一致した後の部分を貪欲にするにはどうすればよいですか?
追加コメント:
- 質問はかなり学術的です。私は pre_split を使用して問題を解決しましたが、他のさまざまな方法が機能しますが、欠点もあります (たとえば、DOM は制御できない無効な HTML では機能しない可能性があります)。しかし、それは私がもっと知りたいと思う繰り返しの問題です。