複数のRSSを読み込み、ソート表示するRSSリーダー : PHP MagpieRSS使用
日付順にソートして書き出してみました。
サンプルは2個になってます。
arrayはアドレス => 表示名です。 ソースコードを解説していきます。
<?php
//まずMagpieRSSのモジュールを読み込む
require_once '../rss/rss_fetch.inc';
require_once '../rss/rss_utils.inc';
require_once '../rss/code_table.ucs2jis';
require_once '../rss/jcode.php';
//次に読み込むRSSの配列を作成する
$mainrss = array ('http://www.pheedo.jp/f/JapaneseTechCrunch' => 'TechCrunch Japanese',
'http://rss.rssad.jp/rss/itmatmarkit/news/rss.xml' => '@IT NewsInsight'
);
//あとで使う配列を規定しておく
$rssarray = array();
//1970年1月1日からの秒数を今の時間で取得
$today = date(U);
//$mainrssを分解してURLと名前に分けて取り出す。このあたりは通常のMagpierssと変わらない。
foreach ($mainrss as $url=>$names){
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = JcodeConvert($title, 4, 4);
foreach ($rss->items as $item ) {
$title = $item['title'];
$urls = $item['link'];
//アイテムの日付を拾う、RSSによって変更する必要あり、if文が必要かも
$date = $item[pubdate];
//タイムスタンプを1970年1月1日からの秒数に変換
$timestamp = date("U",strtotime($date));
//ここは表示用の年月
$daytime = date("Y年m月d日",strtotime($date));
$youbi = array(0 => '(日)', 1 => '(月)', 2 => '(火)', 3 => '(水)', 4 => '(木)', 5 => '(金)', 6 => '(土)');
$youbi2 = date("w",strtotime($date));
//出力はここでタイムスタンプとセットで出力
$linkstr = "<tr><th align=\"left\" valign=\"top\"><span>$daytime $youbi[$youbi2]</span>$names</th><td align=\"left\" valign=\"top\"><a href=\"$urls\">$title</a></td></tr>\n";
//タイムスタンプで配列を作る。
$rssarray["{$timestamp}"] = $linkstr;
}
}
//タイムスタンプでkrsort (配列をキーで逆順にソートする)
krsort($rssarray);
//ここから出力
echo "<table cellspacing=\"0\" cellpadding=\"0\">\n";
//20個まで出力したら終了させる
for(reset($rssarray); $key=key($rssarray); next($rssarray)){
echo "$rssarray[$key]";
$count++;
if($count == 20){
break;
}
}
echo "</table>\n";
?>
稼働させてますがRSSが増えると表示までにかなり時間がかかります。
Ajaxで読み込みさせてますが、高速化する方法がありましたらアドバイスいただけると嬉しいです。
Posted 05/11/08 by ALF | Filed under: Design Tips
Comments
Add Comment