【PHP】サイト(ブログ)のRSSから「タイトル」「URL」「概要」を取得する
自分が運営するブログやよくアクセスするブログのRSSから新着記事の「タイトル」「URL」「概要」を取得する方法を説明します。
この方法を利用することで、サイトに新着記事を表示したり、自前のRSSリーダーを作成できます。
simplexml_load_file
RSSから新着記事のタイトルなどを取得するには、simplexml_load_file関数を使うと超便利です。
simplexml_load_file('ここにRSSのURL', 'SimpleXMLElement', LIBXML_NOCDATA);
この関数は、RSSのURLを引数に渡すと、RSSのXMLファイルをパースし、各種情報を持ったオブジェクトを返してくれます。
戻り値(オブジェクト)
実際にどんな戻り値なのか以下に掲載します(指定したRSSはWordPressサイト)。
[item]の要素は上([0])が概要で下([1])が実際のものです。
SimpleXMLElement Object
(
[@attributes] => Array
(
[version] => 2.0
)
[channel] => SimpleXMLElement Object
(
[title] => サイトタイトル
[link] => サイトURL
[description] => サイト概要
[lastBuildDate] => Mon, 16 Dec 2013 17:53:04 +0000
[language] => ja
[generator] => http://wordpress.org/?v=3.7.1
[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => 記事タイトル
[link] => 記事URL
[comments] => コメントURL(コメントする場所までのページ内リンク)
[pubDate] => 作成日時
[category] => Array
(
[0] => カテゴリーやタグ名
[1] => カテゴリーやタグ名
[2] => カテゴリーやタグ名
[3] => カテゴリーやタグ名
)
[guid] => http://○○○.com/?p=3432
[description] => 記事概要
)
[1] => SimpleXMLElement Object
(
[title] => テスト投稿
[link] => http://○○○.com/3430.html
[comments] => http://○○○.com/3430.html#comments
[pubDate] => Mon, 16 Dec 2013 12:00:53 +0000
[category] => Array
(
[0] => ○○○
[1] => ○○○
[2] => ○○○
[3] => ○○○
[4] => ○○○
)
[guid] => http://○○○.com/?p=3430
[description] => 3430
テスト投稿です。これは […]
)
)
)
)
最新記事のタイトル・URL・概要を取得する
では、サンプルとして、指定したRSSから最新記事(1件のみ)のタイトルとURLを取得するソースを紹介したいと思います。
<?php /* RSSのURL */ $rss = 'http://○○○.com/?feed=rss2'; /* RSSを取得 */ $data = simplexml_load_file($rss, 'SimpleXMLElement', LIBXML_NOCDATA); /* 取得したRSS情報の値を取り出す */ //記事タイトル $post_tile = $data->channel->item->title; //記事URL $post_link = $data->channel->item->link; //記事の概要 $post_description = $data->channel->item->description; //記事の投稿時間を取得する場合 //$post_date = date('Y/m/d H:i',strtotime($data->channel->item->pubDate)); /* 出力 */ //記事へのリンク echo '記事:<a href="' . $post_link . '">' . $post_tile . '</a>'; //記事の概要 echo "$post_description"; ?>
最新の記事をすべて(RSS配信されているすべての記事)のタイトル・URL・概要を取得する
<?php /* RSSのURL */ $rss = 'http://○○○.com/?feed=rss2'; /* RSSを取得 */ $data = simplexml_load_file($rss, 'SimpleXMLElement', LIBXML_NOCDATA); /* 取得したRSS情報の値をループで取り出す */ foreach($data->channel->item as $value){ //記事タイトル $post_tile = $value->title; //記事URL $post_link = $value->link; //記事の概要 $post_description = $value->description; //記事の投稿時間を取得する場合 //$post_date = date('Y/m/d H:i',strtotime($value->pubDate)); /* 出力 */ //記事へのリンク echo '記事:<a href="' . $post_link . '">' . $post_tile . '</a>'; //記事の概要 echo "$post_description"; }; ?>
複数サイトのRSSからタイトル・URL・概要を取得する
これまで一つのRSSから各種情報を取り出しましたが、実際には複数サイトのRSSから情報を取得するのが普通かと思います。
ここでは複数サイトのRSSを配列にいれ、それらから最新記事のタイトル・URL・概要を取り出してみたいと思います(サイト名も取得します)。
<?php $rss = array( 'http://○○○.com/?feed=rss2', 'http://○○○.com/?feed=rss2' ); /* ループでRSSのURLを取り出し、simplexml_load_file関数に渡す */ foreach($rss as $value){ /* RSSを取得 */ $data = simplexml_load_file($value, 'SimpleXMLElement', LIBXML_NOCDATA); /* 取得したRSS情報の値を取り出す */ //サイト名 $site_name = $data->channel->title; //記事タイトル $post_tile = $data->channel->item->title; //記事URL $post_link = $data->channel->item->link; //記事の概要 $post_description = $data->channel->item->description; //記事の投稿時間を取得する場合 //$post_date = date('Y/m/d H:i',strtotime($data->channel->item->pubDate)); /* 出力 */ //記事へのリンク echo '<p>元記事:<a href="' . $post_link . '">' . $post_tile . '</a> (' . $site_name . ')</p>'; //記事の概要 echo "$post_description"; }; ?>
あわせて読んでほしい!
コメント
まだコメントはありません。