2013/11/12

【PHP】RSSの情報を取得してサイトの新着情報を表示する方法

【PHP】RSSの情報を取得してサイトの新着情報を表示する!

他のWebサイトの更新情報を自分のWebサイトに表示したい場合があるかと思います.情報を取得したいWebサイトがRSSを公開しているなら,その情報を取得して表示する方法が簡単です.今回はその取得方法と表示の方法までを紹介します.

目次

XMLとは

XML(Extensible Markup Language)とは,HTMLと同様に,文書のデータや構造を記述するためのマークアップ言語の1つです.
タグを使用して構造やデータの意味を文書に埋め込んでいくことができます.

またXMLでは,ユーザオリジナルのタグを使用できることから,様々な種類のデータを保存するためのフォーマットとして広く利用されています.

RSSとは

Webサイトタイトル等のメタデータを上記のXMLベースのフォーマットで構造化して記述するものです.

主にサイトの更新情報を公開する場合に使用され,Webページのタイトル,URL,ディスクリプション,公開日時などの各種情報を記述でき,この情報を読み込むことで,Webサイト毎の更新情報を画一的な手法で取得することができます.

本Webサイトで公開されているRSSはこのようになっています.

 
スタイルブログ


tag:www.hp-stylelink.com,2013-06-30:/news//2
2013-11-10T22:21:56Z
Web制作会社スタイル
Movable Type Pro 5.2.7

個性で差をつける!商用利用可能な手書き風フリーフォント20選

tag:www.hp-stylelink.com,2013:/news//2.120
2013-11-11T08:00:00Z
2013-11-11T07:21:56Z
タイトルやロゴに使えそうな手書き風のデザインのフリーフォントをご紹介します。い...

MIYASHITA

...

今回は,本Webサイトが公開しているRSS文書から,entryタグ内のtitle要素,link要素内のhref属性,published要素の公開日時を取得してみます.

RSSをPHPで読み込んで表示する方法

では,ソースコードを解説していきます.行数も少なく非常に簡単です.

<?php 
$RSSpath = "http://www.hp-stylelink.com/news/atom.xml";

$XML = simplexml_load_file ( $RSSpath );

foreach ( $XML->entry as $entry ) {
	$title = $entry->title;
	$published = $entry->published;
	$link = $entry->link->attributes ()->href;
	echo "<p>$title<br>$published<br>$link<p>";
}
?>

XMLファイルを読み込むためには,SimpleXMLという拡張モジュールを使用します.RSSデータの読み込みや加工を簡単に行うことができます.

モジュール内のsimplexml_load_file関数RSS情報を取得したいWebサイトのURLを引数として与えると,XMLファイルを読み込んでオブジェクトを返します.

$RSSpath = "http://www.hp-stylelink.com/news/atom.xml";

$XML = simplexml_load_file ( $RSSpath );

$XML内には読み込んだRSS情報の全てが入っていますので,ここから必要な情報をforeach文を使用して抜き出していきます.

まず,$XML内のentryタグ内の情報を$entryという配列に変換します.
そして,$entry内のtitle,published,linkをそれぞれ読み出し,変数に代入しています.

foreach ( $XML->entry as $entry ) {
	$title = $entry->title;
	$published = $entry->published;
	$link = $entry->link->attributes ()->href;
}

最後に変数にの中身をタグを含めてHTML文として出力しています.
タグの記述を変更することで,埋め込みたい場所にあったコードにして出力することができます.

echo "<p>$title<br>$published<br>$link<p>";

実際に動作させてみると,このように表示されます.

実行結果

※href属性は,link->hrefと指定するだけではアクセスできません.
linkタグ内の情報のhref要素というように,link->attributes ()->hrefと記述することで,アクセスできます.

まとめ

意外と簡単にRSS情報が取得できますね.これを少し改変するだけで他の情報を取得できたり,表示する件数を変更したり,HTMLタグの記述を変更できます.
更新情報を取得して表示したい場合に使用してみてはいかがでしょうか.