[PHP] 利用してRSSを読み込む
こんにちは、@yoheiMuneです。
今日はPHPを利用してRSSを読み込む実装に取り組んだので、その記録を残しておきたいと思います。
RSSとは
RSSとは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称を意味します。RSSにはいくつかのバージョンが存在しますが、今回は良く普及しているRSS1.0(RDF Site Summary)を利用します。
今回は、はてなダイアリーのこのページのRSSを利用しました。以下のURLでRSS1.0(今回こっち)とRSS2.0を取得することが出来ます。RSS1.0とRSS2.0はどちらもXML形式の文章ですが、中の構造が少し違うため、扱うには区別する必要があります。
rss1.0 | http://d.hatena.ne.jp/yoheiM/rss |
rss2.0 | http://d.hatena.ne.jp/yoheiM/rss2 |
RSS1.0の例
<?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet href="http://d.hatena.ne.jp/yoheiM/rssxsl" type="text/xsl" media="screen"?> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja"> <channel rdf:about="http://d.hatena.ne.jp/yoheiM/rss"> <title>YoheiM技術やらずに終われまテン</title> <link>http://d.hatena.ne.jp/yoheiM/</link> <description>YoheiM技術やらずに終われまテン</description> <dc:creator>yoheiM</dc:creator> <dc:date>2011-06-12T19:37:24+09:00</dc:date> <items> <rdf:Seq> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110612"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110611"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110610"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110608/1307545327"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110608/1307545384"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110607/1307469774"/> <rdf:li rdf:resource="http://d.hatena.ne.jp/yoheiM/20110607/1307469814"/> </rdf:Seq> </items> </channel> <item rdf:about="http://d.hatena.ne.jp/yoheiM/20110612"> <title>[PHP] PHPでXMLを扱う</title> <link>http://d.hatena.ne.jp/yoheiM/20110612</link> <description> こんにちは、@yoheiMuneです。 今日はPHPでXMLを扱う方法を学びました(*゜▽゜)ノブログに残しておこっと。 XMLファイルを読み込む XMLファイルを読み込むには、以下のように実装する。 $root = simplexml_load_file('data001.xml'); print_r($root); simplexml_loa</description> </item> <item rdf:about="http://d.hatena.ne.jp/yoheiM/20110611"> <title>[PHP]ファイルの読み書きを行う</title> <link>http://d.hatena.ne.jp/yoheiM/20110611</link> <description> こんにちは、@yoheiMuneです。 今日はPHPでファイルを読み込む操作を学びました。ファイルのリソース管理はどの言語でもある程度必要かと思いますが、PHPは簡単で良いですね(*´∇`*)PHPへの好感度が更にUP!! ファイルの中身を読み込んで表示する とりあえず全部読み込ん</description> </item> </rdf:RDF>
channelタグの中にRSS全体に関する内容(タイトル、コンテンツ一覧、URLなど)が記載されており、各itemタグには、各記事の内容(タイトル、コンテンツ、URLなど)が記載されています。
PHPでRSSからデータを抽出する
今回はPHPを利用してRSSの各記事の内容(=itemタグの内容)を抜き出しました。RSSはXMLのため、simleXMLを利用しました。
RSSを読み込んで、SimpleXMLオブジェクトを作成する
simplexml_load_file関数を利用して、SimpleXMLオブジェクトを生成します。
$root = simplexml_load_file('http://d.hatena.ne.jp/yoheiM/rss');
各記事の内容を抽出し、HTMLとして画面へ出力する
生成したSimpleXMLオブジェクトから、各記事の内容(=各itemタグの内容)を取り出し、HTML形式で出力します。
foreach ($root->item as $item) { echo "<div>"; echo " <a href='{$item->link}'><h2>" . $item->title . "</h2></a>"; echo " <div>" . $item->description . "</div>"; echo "</div>"; }
生成したSimpleXMLのitemタグの中から、title、link、descriptionを取得し、HTMLタグで囲ってHTML文章として生成します。
以下が出来上がりのイメージです。
参考
PHPのSimpleXMLは、以下のサイトに概要や使い方など、詳しく掲載されています。
http://jp.php.net/manual/ja/book.simplexml.php
最後に
PHPでRSSを扱うのに、色々と周り道をしましたが、SimpleXMLで扱えるのにはビックリです。簡単で良かったです。
運営しているサイトです。どうぞよろしくお願いします(*´∇`*)
HTML5Learners:HTML5を学び合うFacebookPage
HTML5サンプルページ:作成したサンプルを載せているサイト
yoheim.NET:技術情報を中心に情報発信サイト