用PHP讀取RSS feed的代碼
更新時間:2008年08月01日 13:20:39 作者:
由于需要讀取不同來源的rss feed,寫了一個php程序來循環(huán)讀取rss feed,為了方便閱讀及了解程序?qū)崿F(xiàn)過程,加上了注釋,和大家共同學(xué)習(xí)。
而助易網(wǎng)的rss讀取就是在這個程序的基礎(chǔ)上稍做改造而成,主
要是輸出了一個數(shù)組字符串以及解決編碼問題。
php源代碼及代碼詳細(xì)解釋如下:
<?php
//RSS源地址列表數(shù)組
$rssfeed = array("http://www.dbjr.com.cn/feed",
"http://rss.sina.com.cn/news/allnews/sports.xml",
"http://ent.163.com/special/00031K7Q/rss_toutiao.xml",
"http://tech.163.com/special/00091JPQ/techimportant.xml");
//設(shè)置編碼為UTF-8
header('Content-Type:text/html;charset= UTF-8');
for($i=0;$i<sizeof($rssfeed);$i++){//分解開始
$buff = "";
$rss_str="";
//打開rss地址,并讀取,讀取失敗則中止
$fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");
while ( !feof($fp) ) {
$buff .= fgets($fp,4096);
}
//關(guān)閉文件打開
fclose($fp);
//建立一個 XML 解析器
$parser = xml_parser_create();
//xml_parser_set_option -- 為指定 XML 解析進(jìn)行選項設(shè)置
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
//xml_parse_into_struct -- 將 XML 數(shù)據(jù)解析到數(shù)組$values中
xml_parse_into_struct($parser,$buff,$values,$idx);
//xml_parser_free -- 釋放指定的 XML 解析器
xml_parser_free($parser);
foreach ($values as $val) {
$tag = $val["tag"];
$type = $val["type"];
$value = $val["value"];
//標(biāo)簽統(tǒng)一轉(zhuǎn)為小寫
$tag = strtolower($tag);
if ($tag == "item" && $type == "open"){
$is_item = 1;
}else if ($tag == "item" && $type == "close") {
//構(gòu)造輸出字符串
$rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />";
$is_item = 0;
}
//僅讀取item標(biāo)簽中的內(nèi)容
if($is_item==1){
if ($tag == "title") {$title = $value;}
if ($tag == "link") {$link = $value;}
}
}
//輸出結(jié)果
echo $rss_str."<br />";
}
?>
要是輸出了一個數(shù)組字符串以及解決編碼問題。
php源代碼及代碼詳細(xì)解釋如下:
<?php
//RSS源地址列表數(shù)組
$rssfeed = array("http://www.dbjr.com.cn/feed",
"http://rss.sina.com.cn/news/allnews/sports.xml",
"http://ent.163.com/special/00031K7Q/rss_toutiao.xml",
"http://tech.163.com/special/00091JPQ/techimportant.xml");
//設(shè)置編碼為UTF-8
header('Content-Type:text/html;charset= UTF-8');
for($i=0;$i<sizeof($rssfeed);$i++){//分解開始
$buff = "";
$rss_str="";
//打開rss地址,并讀取,讀取失敗則中止
$fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");
while ( !feof($fp) ) {
$buff .= fgets($fp,4096);
}
//關(guān)閉文件打開
fclose($fp);
//建立一個 XML 解析器
$parser = xml_parser_create();
//xml_parser_set_option -- 為指定 XML 解析進(jìn)行選項設(shè)置
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
//xml_parse_into_struct -- 將 XML 數(shù)據(jù)解析到數(shù)組$values中
xml_parse_into_struct($parser,$buff,$values,$idx);
//xml_parser_free -- 釋放指定的 XML 解析器
xml_parser_free($parser);
foreach ($values as $val) {
$tag = $val["tag"];
$type = $val["type"];
$value = $val["value"];
//標(biāo)簽統(tǒng)一轉(zhuǎn)為小寫
$tag = strtolower($tag);
if ($tag == "item" && $type == "open"){
$is_item = 1;
}else if ($tag == "item" && $type == "close") {
//構(gòu)造輸出字符串
$rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />";
$is_item = 0;
}
//僅讀取item標(biāo)簽中的內(nèi)容
if($is_item==1){
if ($tag == "title") {$title = $value;}
if ($tag == "link") {$link = $value;}
}
}
//輸出結(jié)果
echo $rss_str."<br />";
}
?>
相關(guān)文章
PHP設(shè)置圖片文件上傳大小的具體實現(xiàn)方法
PHP默認(rèn)的上傳限定是最大2M,想上傳超過此設(shè)定的文件,需要調(diào)整PHP、apache等的一些參數(shù)2013-10-10laravel5創(chuàng)建service provider和facade的方法詳解
這篇文章主要介紹了laravel5創(chuàng)建service provider和facade的方法,實例分析了laravel創(chuàng)建service、provider和facade類的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下2016-07-07Yii框架擴展CGridView增加導(dǎo)出CSV功能的方法
這篇文章主要介紹了Yii框架擴展CGridView增加導(dǎo)出CSV功能的方法,結(jié)合實例形式較為詳細(xì)的分析了Yii框架擴展組件實現(xiàn)導(dǎo)出CSV格式數(shù)據(jù)的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-05-05使用swoole 定時器變更超時未支付訂單狀態(tài)的解決方案
本文主要是借助 swoole 定時器和 redis 的 zset 來實現(xiàn)的定時檢查并過期未支付訂單,感興趣的朋友跟隨小編一起看看吧2019-07-07PHP設(shè)計模式入門之狀態(tài)模式原理與實現(xiàn)方法分析
這篇文章主要介紹了PHP設(shè)計模式入門之狀態(tài)模式,結(jié)合實例形式分析了PHP狀態(tài)模式基本概念、原理、實現(xiàn)方法及操作注意事項,需要的朋友可以參考下2020-04-04