• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php、fgets関数について質問です。)

【PHP】fgets関数を使用してファイル内容を出力する方法と特定の一部を出力する方法

このQ&Aのポイント
  • phpのfgets関数を使用することで、ファイルの内容を全体的に出力することができます。
  • ただし、特定の一部を出力する場合は、ファイルを1行ずつ読み込みながら、条件に合致する箇所を判定し、出力する必要があります。
  • 例えば、読み込んだページ内容の<span id="ほにゃらら">から</span>の間を出力する場合は、読み込んだ行に対して正規表現を使用してパターンマッチングを行い、条件に合致する場合に出力します。

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> 教えて下さった構文は、preg_match_allで対象から条件に当てはま >> るものを配列化⇒print_rで出力という認識でいいのでしょうか? その通りです。該当箇所が1箇所なら preg_match で十分です。 >> とやってみたのですが、何も表示されませんでした。 変更された正規表現にミスが有るのが原因でしょう。 当方では、対象としている原文のspanタグ内の正確な表現がわかりませんので 作成は出来ません。 質問にあったタグの表現のままなら下記でできます。 <?php $page='読み込んだページ内容の<span id="ほにゃらら">から</span>の間を出力する'; if(preg_match("/<span id=\"ほにゃらら\">(.*?)<\/span>/i", $page, $spans)) print $spans[1]; else print "Not Found"; ?>

dogfeet
質問者

お礼

ありがとうございます!preg_match()関数でバッチリできました!! 色々試してみた結果、preg_match_allでもできましたが、mpxさんの言うとおりpreg_matchで十分ですね^^; 色々と勉強になりました!本当にありがとうございます!!

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

fgetsだけでは出来ませんので、一旦ファイル(ページ)全体を読み込んでから該当文字列を抽出することになります >> 読み込んだページ内容の<span id="ほにゃらら">から</span>の間を >> 出力するなどは可能なのでしょうか? 下記では如何でしょうか? <?php $page = file_get_contents('http://ほにゃらら.com'); preg_match_all("/<span.*?>(.*?)<\/span>/ix", $page, $spans); print_r($spans[1]); ?>

dogfeet
質問者

補足

ご回答ありがとうございます! 教えて下さった構文は、preg_match_allで対象から条件に当てはまるものを配列化⇒print_rで出力という認識でいいのでしょうか? 全てのspanタグの中身が表示されました。 今回はhtmlの中から特定のidの付いたタグの内容を表示したかったため、 <?php $page = file_get_contents('http://ほにゃらら.com'); preg_match_all("/<span id=\"hoge\">(.*?)<\/span>/ix", $page, $spans); echo $spans[1][0] . "\n"; ?> とやってみたのですが、何も表示されませんでした。 お手数ですが、再度ご回答頂ければ嬉しいです。

関連するQ&A