0

<ul></ul>文字列からすべてのリストを個別に選択するには、PHPの正規表現パターンが必要です。文字列は次のようになります。

Lorem ipsum dolor sit amet,...
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>
Lorem ipsum dolor sit amet,...
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>
....

両方のリストを抽出して配列に保存する必要があるため、結果は次のようになります。

$listsarray[0] = first list code from <ul> to </ul>.
$listsarray[1] = second list code, etc..

私が試したことですが、これは期待どおりに機能しません。リストが3つ以上ある場合は、最初の2つを1つとして選択します(理由はわかりません。正規表現の初心者です)。

$content = 'the content like above...';
$pattern = '/<ul[^.]*<\/ul>/';
preg_match_all($pattern, $content, $listsarray)
4

2 に答える 2

3

HTML の解析に正規表現を使用しないでください。HTML は通常の言語ではないため、悪い考えです... tidy組み込みの DOMDocumentなどの他の方法を使用して、正規表現なしで簡単に解析できます。

あなたが主張するなら、あなたが探しているのは(貪欲ではなく)消極的なマッチングです

*に変更*?

違いについてのこの投稿と、正規表現で html を解析しようとするのがなぜ悪い考えなのかについてのこの投稿を参照してください。

于 2012-07-06T09:31:02.097 に答える
0

これを使って:

<ul>(?<ulContent>.*?)</ul>

ulContentという名前のグループを取得します

于 2012-07-06T09:38:10.760 に答える