【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";
};
?>
あわせて読んでほしい!
コメント
まだコメントはありません。



