• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現を用いてHTML内の文字列を抜き出したいのですが・・・)

正規表現でHTML内の文字列を抜き出す方法

このQ&Aのポイント
  • PHPの正規表現を用いて外部Webページのソース内にある文字列を抜き出す方法をご教授ください。
  • 質問者は特定のタグに挟まれた文字列を抜き出したいと考えていますが、現在のプログラムではうまくいかないとのことです。
  • 正規表現によるマッチングの部分をどのように書くべきか、詳しい方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

仕様についてはもう少し詰めた方がよいかもしれませんが、 概ね以下のようにすればよいかと・・・ なおファイルI/Oについては紛らわしいので、今回は割愛しました <? $html=<<<eof <table border> <tbody> <tr> <td class="nml">111</td> <td class="nml">222<br />333</td> </tr> <tr> <td class="nml">444<br> 555</td> <td class="NG">666</td> </tr> </tbody> </table> eof; print $html; $html=str_replace(Array("<br>","<br />","\n","\r"),"",$html); $pattern="/<td class=\"nml\">(.*?)<\/td>/mis"; preg_match_all($pattern,$html,$matches); print "<pre>\n"; print_r($matches); print "</pre>\n"; ?>

coco218-8
質問者

補足

ご回答頂きましてありがとうございます。 ご教授頂きましたプログラムを自分のプログラムに組み合わせましたが、確かに文字列がしっかりと表示されました。しかし、その文字列が文字化けして表示されてしまいます。 mb_http_output("SJIS"); ・・・(1) mb_convert_encoding("EUC-JP", "SJIS"); ・・・(2) 等、色々試みましたが文字化けが直らず、(1)を実行すると画面に何も表示されなくなってしまいます。 どうか、文字化けの解決方法がありましたら、重ねてご教授頂けないでしょうか。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>ソース内にある文字列を抜き出してきたい その条件が書いていないので回答のしようがありません classがnmlのtdに囲まれた文字列を欲しいのでしょうか?

coco218-8
質問者

補足

ご回答頂きありがとうございます。 説明不足で申し訳ありません。おっしゃるとおり、classがnmlでかつtdに囲まれた文字列を取得する方法をご教授頂けないでしょうか。また、そのtdタグ内に改行タグbrが存在した場合、そちらも取り除いた「文字列だけ」を出力した場合の方法も合わせてご教授頂けると幸いです。 宜しくお願い致します。

関連するQ&A

専門家に質問してみよう