用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.dhdzp.com/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.dhdzp.com/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)文章
laravel 實現(xiàn)向公共模板中傳值 (view composer)
今天小編就為大家分享一篇laravel 實現(xiàn)向公共模板中傳值 (view composer),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
PHP實現(xiàn)數(shù)據(jù)分頁顯示的簡單實例
下面小編就為大家?guī)硪黄狿HP實現(xiàn)數(shù)據(jù)分頁顯示的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給的大家做個參考。一起跟隨小編過來看看吧2016-05-05
Thinkphp5框架使用validate實現(xiàn)驗證功能的方法
這篇文章主要介紹了Thinkphp5框架使用validate實現(xiàn)驗證功能的方法,結(jié)合實例形式分析了tp5內(nèi)置的對象validate實現(xiàn)驗證的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Thinkphp框架 表單自動驗證登錄注冊 ajax自動驗證登錄注冊
這篇文章主要介紹了Thinkphp框架 表單自動驗證登錄注冊 ajax自動驗證登錄注冊的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-12-12
php設(shè)計模式之模板模式實例分析【星際爭霸游戲案例】
這篇文章主要介紹了php設(shè)計模式之模板模式,基于星際爭霸游戲案例形式分析了php模板模式相關(guān)原理與使用技巧,需要的朋友可以參考下2020-03-03
ThinkPHP快速入門實例教程之?dāng)?shù)據(jù)分頁
這篇文章主要介紹了ThinkPHP快速入門實例教程的數(shù)據(jù)分頁實現(xiàn)過程,需要的朋友可以參考下2014-07-07

