php rss讀取
碰到需要抓rss資料的需求,紀錄一下使用php讀取rss檔案內容的方式。
rss讀取
直接使用simplexml_load_file讀取網址內容,接著就可以用迴圈處理資料。
if (!($x = simplexml_load_file($file_or_url))){
error_back("讀取失敗,請確認網址是否正確");
}
foreach ($x->channel->item as $item)
{
$dline["datestr"] = date('Y-m-d', strtotime($item->pubDate));
$dline["link"] = trim((string) $item->link);
$dline["guid"] = trim((string) $item->guid);
$dline["fileurl"] = trim((string) $item->enclosure->attributes()->url);
$dline["title"] = trim((string) $item->title);
$dline["description"] = trim((string) $item->description);
}
其中有碰到有部分欄位開頭是@的狀況,網路上的方法測試後只有使用()呼叫才有辦法取得,可能是設定或版本問題(這邊使用php7)其他方法使用後直接跳出錯誤。
//這個php7測試無法使用
{'@attributes'};
//使用下面這個方法
$item->enclosure->attributes();
參考資料
https://stackoverflow.com/questions/250679/best-way-to-parse-rss-atom-feeds-with-php
https://stackoverflow.com/questions/16629826/accessing-attribute-from-php-object