RSS & Atom Feeds for PHPを用いた簡易RSS表示
備忘録と記録を兼ねて、RSS & Atom Feeds for PHPを用いた簡易RSS表示の方法を記します。
1.rssControllerの作成
<?php // ライブラリの読み込み require_once("lib/Feed.php"); // HTML表示用 $html = ''; // 最大表示件数 $maxview = 5; // 取得するフィードURL $urls = array( "http://www.100shiki.com/feed", "http://postd.cc/feed/", "http://techable.jp/feed", "http://jp.techcrunch.com/feed/", "http://appmarketinglabo.net/feed/" ); // rssをまとめた配列 $entrylist = array(); // rssごとに一つずつ抽出 for ($i=0; $i < count($urls) ; $i++) { $url = $urls[$i]; // インスタンス生成 $feed = new feed(); // loadRssメソッドを用いてrssの読み込み $rss = Feed::loadRss($url); for ($entry = 0; $entry < 1; $entry++) { $sitename = $rss->title ; $sitelink = $rss->link ; $item = $rss->item[$entry]; // 各エントリーの処理 $title = $item->title ; $link = $item->link ; // 記事の発行日時をタイムスタンプに変換 $timestamp = strtotime( $item->pubDate ) ; // 配列に格納 $entrylist[$i]['sitename'] = $sitename; $entrylist[$i]['sitelink'] = $sitelink; $entrylist[$i]['title'] = $title; $entrylist[$i]['link'] = $link; $entrylist[$i]['timestamp'] = $timestamp; } } // 日付でソートするための配列 foreach ((array)$entrylist as $key => $value) { $sort[$key] = $value['timestamp']; } // 日付順に配列をソート array_multisort($sort, SORT_DESC, $entrylist); // 書き出す件数を設定 if ( count($entrylist) > $maxview ) { $entrynum = $maxview; } else { $entrynum = count($entrylist); } // 書き出し(リンクは新規ウインドウで開く) for ($i = 0; $i < $entrynum; $i++) { $html .= '<tr><td><a href="' . $entrylist[$i]['sitelink'] . '" target="_blank">' . $entrylist[$i]['sitename'] . '</a></td><td>' . date( "Y/m/d" , $entrylist[$i]['timestamp'] ) . '</td><td><a href="' . $entrylist[$i]['link'] . '" target="_blank">' . $entrylist[$i]['title'] . '</a></td></tr>' .'<br>'; } ?>
読み込んだライブラリの配布先はコチラです。
Zip形式でダウンロードして中にあるFeed.phpを適当な場所に配置して
require_once('読み込んだファイルのパス')
でOK。
$htmlでサイトリンク、サイト名、記事の日時、記事リンクの順で書き出されるようにしています。
初めに空にしておくのを忘れずに。
// 日付順に配列をソート array_multisort($sort, SORT_DESC, $entrylist);
こちらで使っているようにarray_multisort関数を使うことでソートして表示することが出来ます。
コレ、有能です!!!
2.rss表示部分の作成
<?php require_once("../Controller/rssController.php"); ?> <?php echo "<table border=1>"; echo "<tr>"; echo "<th>サイト名</th>"; echo "<th>日付</th>"; echo "<th>記事タイトル</th>"; echo "</tr>"; echo $html; echo "</table>" ; ?>
こちらでは先程作ったrssControllerを
require_once("../Controller/rssController.php");
として読み込んでいます。
後は適当にテーブルタグを使って大体の体裁を整えて完成です!
飾り気のないシンプルなものですが・・・