2011/11/20更新

[PHP] 利用してRSSを読み込む

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。

今日はPHPを利用してRSSを読み込む実装に取り組んだので、その記録を残しておきたいと思います。

f:id:yoheiM:20110614180008j:image


RSSとは

RSSとは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称を意味します。RSSにはいくつかのバージョンが存在しますが、今回は良く普及しているRSS1.0(RDF Site Summary)を利用します。

今回は、はてなダイアリーのこのページのRSSを利用しました。以下のURLでRSS1.0(今回こっち)とRSS2.0を取得することが出来ます。RSS1.0とRSS2.0はどちらもXML形式の文章ですが、中の構造が少し違うため、扱うには区別する必要があります。

rss1.0http://d.hatena.ne.jp/yoheiM/rss
rss2.0http://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(&#39;data001.xml&#39;); 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文章として生成します。

以下が出来上がりのイメージです。

f:id:yoheiM:20110614174900p:image



参考

PHPのSimpleXMLは、以下のサイトに概要や使い方など、詳しく掲載されています。

http://jp.php.net/manual/ja/book.simplexml.php



最後に

PHPでRSSを扱うのに、色々と周り道をしましたが、SimpleXMLで扱えるのにはビックリです。簡単で良かったです。

運営しているサイトです。どうぞよろしくお願いします(*´∇`*)

HTML5Learners:HTML5を学び合うFacebookPage

HTML5サンプルページ:作成したサンプルを載せているサイト

yoheim.NET:技術情報を中心に情報発信サイト



こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。