【PHP】サイト(ブログ)のRSSから「タイトル」「URL」「概要」を取得する

公開日:
更新日:
カテゴリー: PHP

自分が運営するブログやよくアクセスするブログの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";
};
?>




 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント