• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php4でxmlを取得してページに表示)

PHP4でXMLを取得してページに表示する方法と複数記事の表示方法

このQ&Aのポイント
  • PHP4を使用してXMLを取得し、ページに表示する方法を紹介します。また、複数記事を表示させる方法も説明します。
  • XMLデータを取得するためのベースURLを指定し、file_get_contents関数を使用してXMLファイルを読み込みます。その後、正規表現を使用して記事のタイトル、リンク、概要、カテゴリーなどを抽出します。
  • <dc:type>が「番付」の記事のみを抜き出す方法も紹介します。正規表現パターンに<dc:type>番付</dc:type>を追加し、マッチした記事のみを表示できます。

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

  • ベストアンサー
回答No.1

<?php function news(){ //XMLデータ取得用ベースURL $req = "http://polls.dailynews.yahoo.co.jp/rss.xml"; //XMLファイル内容を全て文字列に読み込む $buf = file_get_contents($req); preg_match_all('@<item>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<description>(.*?)</description>.*?<dc:subject>.*?</dc:subject>.*?<dc:type>(.*?)</dc:type>.*?</item>@s', $buf, $match, PREG_SET_ORDER); $ret = ""; for ($i = 0;$i < count($match);$i++){ $ret .= "<h1><a href=\"".$match[$i ][2]."\">".$match[$i ][1]."</a></h1>"; $ret .= "<div>".$match[$i ][3]."【".$match[$i ][4]."】</div>"; } return $ret; } echo news(); ?> <?php function news(){ //XMLデータ取得用ベースURL $req = "http://polls.dailynews.yahoo.co.jp/rss.xml"; //XMLファイル内容を全て文字列に読み込む $buf = file_get_contents($req); preg_match_all('@<dc:type>(.*?)</dc:type>@s', $buf, $match, PREG_SET_ORDER); $ret = "<ul>"; for ($i = 0;$i < count($match);$i++){ $ret .= "<li>" . $match[$i ][1] . "</li>"; } $ret .= "</ul>"; return $ret; } echo news(); ?> #…と,一応書いたけど #前回(Q4338700)の時も思っていたんですが,俺この手法大嫌いなんですよね。 #絶対にどこかでミスする。 サーバ側のプログラム変更等により色々なパーザーを経由しているうちに 【名前空間接頭辞が変更されない保証はない】し, 【異なる名前空間に対して同一の名前空間接頭辞が使われない保証もない】し, 【そもそもこのコードは http://oshiete1.goo.ne.jp/qa3684051.html の手のものには一切対応してないが, XMLとしては等価ものなので使われても文句は言えない。】 ざっと考えただけでこれだけあるんだ。まだまだあるに違いない。 #XMLを正規表現でいじるタイプのものへの回答は嫌悪感が物凄い

mooooooood
質問者

お礼

前回に続き、ありがとうございます。 正規表現だと問題がいろいろあるんですね。 他の方法も検討してみることにします。

関連するQ&A