Entries

SimpleXML でRSSの中の狙ったitemタグに配列の添字を使ってアクセスする(PHP5.3.5)

PHP5で、RSS2.0ファイルの中の特定のノードにアクセスするプログラムを書こうと
思い調べてみました。

はじめに以下のサイト、

「PHPでRSS取得する方法」
http://php-web.net/faq/rss.html

のサンプルを打ち込んで動作確認をしたらエラーが出て動きません。
PHPのバージョンのせいかなーーとか思いながら
原因がよく分からないまま色々と調べていたら、
こんなサイトを見つけました。

「PHPのSimpleXMLを配列に変換する」
http://fdays.blogspot.com/2011/03/php-simplexml.html

このサイトには、「シンプルなXMLなら、SimpleXMLElementオブジェクトを
arrayにキャストするだけで連想配列に変換できる。」と書かれており、
このサイトにあるサンプルを打ち込んでみたら、確かにそれらしいものが
できています(var_dump()の表示結果より)。
でも、連想配列を使って任意のデータを参照するような
サンプルが見当たりません。困ってしまったので再びvar_dump()で出力された
データを眺めていたら、こんなコーディングで良いのではないかと思い
PHPでRSS取得する方法」のサイトにあるサンプルに手を加える形で
修正したら動きました。
こんな感じです。


<html>

<head><title>PHP5 RSS2.0の内部に配列の添字を使ってアクセス</title></head>

<body>

<?php

// オリジナルは、http://php-web.net/faq/rss.html から。

// 「Yahoo!ニュース - 国内 - 産経新聞」を使わせていただきます

$rssurl = "http://headlines.yahoo.co.jp/rss/san_dom.xml"; // RSS2.0

$rssdata = simplexml_load_file($rssurl);

$node_channel = (array)($rssdata->channel); // タグ"channel"まで降りて

$num_of_data = 5; // 5個くらいにしておきます

$outdata = "";

for ($i=0; $i<$num_of_data; $i++){

$outdata .= "<li>";

$outdata .= "<a href=¥"";

$outdata .= $node_channel['item'][$i]->link;

$outdata .= "¥">";

$outdata .= $node_channel['item'][$i]->title;

$outdata .= "</a>¥n";

$outdata .= $node_channel['item'][$i]->description;

$outdata .= "</li>";

}

echo $outdata;

?>

</body>

</html>


PHP5によるRSS2.0の任意データ抽出

こんな感じで出力されるはず!


もし試されるのであれば、ファイルはUTF-8で保存してね!!
他に、以下のサイトが参考になりました。

simpleXML でRSSの表示 PHP5 (twitter 表示)
http://yumisaiki.blogspot.com/2009/05/simplexml-rssphp5.html

PHP5を試してみる - SimpleXML関数でRSSしてみる
http://www.doyouphp.jp/php5/php5_simplexml.shtml
(文字コード変換についてもこのサイトが詳しいです。)

ここにもありますが、ちょっと難しいかも...
XML Parser(php5 SimpleXML)
http://jkl.sakura.ne.jp/labs/archives/34

動作環境:
XAMPP1.7.4(PHP5.3.5)
Windows Vista Enterprise SP2

スポンサーサイト
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://tadpolizemedia.blog118.fc2.com/tb.php/143-56642829

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

 二代目松四郎

Author: 二代目松四郎


「カメラと動画(+スチル写真)」
「音響と音楽」
「プログラミング」
を主なテーマに活動しています。
映画館と美術館と音楽ホールと
古い街並みが私の学校。

宮城県仙台市在住。

カテゴリー

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Counter