PHPでRSSを取得して自サイトに表示:MagpieRSS
他サイトのRSSを自サイトに表示したいと思い、早速グーグル先生にお伺い。
feed2jsが手軽で便利そうだったので導入。
多彩な設定が簡単にできて良かったんですが、java scriptでそのまま出力されるため見難い。
PHPでRSS取得できないかなと、またもやグーグル先生にお伺い、MagpieRSSというRSSパーサーを発見。
とりあえずFTPでMagpieRSSをputして、PHPコードを書き書き。
read meに簡単なサンプルがあったので少し手を加えてDiablo3のRSSを取得できるようになりました。
$item['XMLタグ名']でXML内のデータを取得できるようです。
本当は投稿日を取得したかったんですが、海外のサイトはdcdateの代わりにpubDateだったり、dcdateはあるけど初期値が入ってて1970年とか表示されたりで諦めました。
<?php
//rss_fetch.incへのパス
//※パスは環境によって変わるため適切なパスを設定してください
require_once 'magpierss/rss_fetch.inc';
//RSSを取得するURLの設定
//今回は対象サイトを3つ指定している。
//増やしたい場合は $urlList[] = 'URL'; の行を追加すればいい。
$urlList = array();
$urlList[] = 'http://www.4gamer.net/games/008/G000817/contents.xml';
$urlList[] = 'http://feeds.feedburner.com/DiabloIiiNewsAndUpdates';
$urlList[] = 'http://www.diii.net/feeds/news.php';
//urlListの数だけloop
foreach ($urlList as $url){
//対象URLのデータを取得
$rss = fetch_rss($url);
//対象サイトのタイトルを$titleに格納
$title = $rss->channel['title'];
//表示させるページの文字コードに変換
$title = mb_convert_encoding($title, "UTF-8", "auto");
//対象サイトのURLを$linkに格納
$link = $rss->channel['link'];
//HTMLとして出力(タイトル名とホームへのリンク)
print "<div id=\"rss-box\" class=\"rss-box\">";
print "<h2 class=\"rss-title\"><a href=\"${link}\">$title</a></h2>\n";
print "<ul>\n";
//記事の数だけloop
foreach ($rss->items as $item ) {
//記事のタイトルを$titleに格納
$title = $item['title'];
//表示させるページの文字コードに変換
$title = mb_convert_encoding($title, "UTF-8", "auto");
//記事のURLを$linkに格納
$url = $item['link'];
//記事毎のHTML出力(記事タイトル名と記事へのリンク)
print "<div class=\"rss-items\"><li><a href=\"$url\">$title</a></li></div>\n";
}
//ulタグとdivタグを閉じる
print "</ul></div>\n";
}
?>