2009-07-03 14:16 RSS訂閱功能....
被要求替教育局的公告系統加入RSS訂閱功能也有一段時間了,
一來懶、二來學期末較忙,
所以遲遲未動手。
直到今天早上終於著手進行,
先到PEAR網站看一下,發現PEAR真是太強了,
裡面就有一個自動產生XML格式的套件,
只要安裝以下兩個套件:
pear install xml_util
pear install xml_serializer-0.2.0
那就先完成90%了。
接著在網站目錄下新增一個php檔案,並加入下以程式碼:
require_once ("XML/Serializer.php");
$options = array("indent" => " ",
"linebreak" => "\n",
"addDecl" => true,
"encoding" => "big5",
"rootName" => "rss",
"rootAttributes" => array("version" => 2.0),
"defaultTagName" => "item"
);
$query = "select * from board where bo_time >='{$day}' or bo_rtime >='{$day}' order by bo_time DESC ";
$result = $connection->query($query);
while ($result->fetchInto($rows)) {
$days = date(DATE_RSS, strtotime($rows[10]));
$news[] = array('title'=>$rows[4],
'link' => "http://www.phc.edu.tw/boardsign/show.php?id=".$rows[0],'description' =>$rows[7],'pubDate'=>$days
);
}
$connection->disconnect();
$head = array("title" => "澎湖縣教育局最近兩天公告",
"link" => "http://www.phc.edu.tw/boardsign/"
);
$data['channel'] = array_merge($head, $news);
$serializer = new XML_Serializer($options);
if($serializer->serialize($data)){
header('Content-type: text/xml');
echo $serializer->getSerializedData();
}
不到50行的程式,就擁有rss訂閱功能,投資報酬率超高,
不過,其中較有趣的是" $days = date(DATE_RSS, strtotime($rows[10]));"這行,
一開始,在RSS文件中,公告的時間都會跑掉,覺得奇怪,後來查了一下資料,
發現:RSS 文件中出現的日期格式都必須以 RFC822: Standard for ARPA Internet Text Messages 中定義的日期時間規範呈現
也就是資料庫DATETIME欄位的格式不符RSS的格式,
再查了一下PHP DATE函數的資料,
發現:PHP的DATE函數己有RSS格式轉換的參數,方式如下:
date(DATE_RSS, strtotime(資料庫日期欄位))
於是,在PEAR與PHP DATE函數的庇蔭下,
RSS訂閱功能就上線服務囉,
不過,令人好奇的是,
雖說有需要加此功能,但會用的到底有幾個人呢???
我要評分:




