臺大有一個Taiwan Historian Network,是一個利用RSS訂閱各部落格訊息的平臺,但是年久失修,有重複匯入、排版上的問題,訂閱網站也不夠豐富,所以我就決定自己寫一個。
只要將程式碼貼在一個網頁程式碼的<body>內,然後在$rss_url=array()陣列內放上你要聯播的RSS網址,最後把網頁存成PHP並丟到伺服器上,就可以實現多站聯播了。但 simplexml_load_file()需要時間載入,因此加入越多RSS站,開網頁的速度會越慢,所以這只是初步完成的堪用版本。我再想一下更有效率的寫法吧,因為如果要預存這些RSS內容,似乎需要JS或後端資料庫。
載入要一些時間,直接前往網站:http://studentweb.ncnu.edu.tw/100105503/funny/rss.php
<table width="80%" style="border:6px #d0d0d0 solid;padding:6px;" rules="all" cellpadding='5';> <?php $rss_url=array("http://shi-yuan.blog.ntu.edu.tw/feed/");//放RSS網址的陣列 $max_url=count($rss_url);//取網站陣列最大值 $j=0;//日期記數器 for ($i=0;$i<$max_url;$i++) { $rss_url[$i]= simplexml_load_file($rss_url[$i]);//讀取xml的參數 $rss_title[$i]=$rss_url[$i]->channel->title;//放入標題的陣列 foreach ($rss_url[$i]->channel->item as $item) { $rss_date[$j]=strtotime($item->pubDate);//匯入日期 $rss_date2[$j]= "<tr style=\"border:6px #d0d0d0 solid;padding:6px;\"><td><h2><a href='" . $item->link . "' target=_blank>" . $item->title . "</a></h2>"."<p>網站:".$rss_title[$i]." | 發布時間:".$item->pubDate."</p>".$item->description ."</td></tr>";//匯入RSS資料 $rss_date3[$j]=$j; $j++;//日期記數+1 } } $max_date=count($rss_date);//取時間陣列最大值 for($i=0;$i<$max_date;$i++)//氣泡排序 { for($j=$max_date-1;$j>$i;$j--) { if($rss_date[$j]>$rss_date[$j-1]) { $temp=$rss_date[$j-1];//氣泡移動 $temp2=$rss_date3[$j-1];//索引同步移動 $rss_date[$j-1]=$rss_date[$j];//氣泡移動 $rss_date3[$j-1]=$rss_date3[$j];//索引同步移動 $rss_date[$j]=$temp;//氣泡移動 $rss_date3[$j]=$temp2;//索引同步移動 } } echo $rss_date2[$rss_date3[$i]];//輸出RSS內容 if ($i>48) break;//要輸出的數量 } ?> </table>
2014年3月24日補記:上面的程式碼是提供給沒有資料庫的使用者,因為我有mySQL資料庫,所以另外寫了一個版本,包含一個簡易的判斷式,每天會先把資料都匯入資料庫,同天就可以從資料庫直接輸出,隔天才要重新匯入。如此一來,只有每天第一個瀏覽的人仍然會很慢,後來瀏覽的人就會變快。我對此的解決方法是,放一個隱形框架在我的部落格網頁上,讓人不知不覺中成為第一個瀏覽者。雖然解決了速度的問題,卻仍有個問題無解,即每天第一個瀏覽者,如果重新整理之類的,資料庫會有重複匯入的情況。
文章標籤
全站熱搜
留言列表