急がば走れ

急がば走れ

徒然なるままに興味のあることや日々の出来事を書きます。

RSS & Atom Feeds for PHPを用いた簡易RSS表示

備忘録と記録を兼ねて、RSS & Atom Feeds for PHPを用いた簡易RSS表示の方法を記します。

今回はPHPMVCを用いて作成しました。

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");

として読み込んでいます。

後は適当にテーブルタグを使って大体の体裁を整えて完成です!

飾り気のないシンプルなものですが・・・