PHP4の質問になります。HTMLのtableから正規表現にマッチする部分を1組づつ全て抽出しようとしています。


preg_match_all("/<tr>(.+)<\/tr>/si", $html, $match);

のようにしてみたのですが、matchには最初の「<tr>」から最後の「</tr>」までの間のHTMLがそのまま返されてしまいます。
どこか間違いがありますでしょうか?上手くいく方法を教えてください。


・HTML
<tr>
この部分を抽出したい。$match[0][1]
</tr>
<tr>
この部分を抽出したい。$match[1][1]
</tr>
<tr>
この部分を抽出したい。$match[2][1]
</tr>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/09/03 13:35:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント60pt

"/(.+?)<\/tr>/si"

正規表現を上記のものに入れ替える。

.+ だと出来うる限り最大長の長さにマッチしようとするので、 .+? にするのがポイント。

http://jp2.php.net/manual/ja/reference.pcre.pattern.syntax.p...

  • id:wizemperor
    すみません、コメント返信前に終了してしまいました。
    なるほど、「.+?」にしたところ無事上手くいきました。
    パターン構文のページ、しっかりと読見直してきます。
    どうもありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません