程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP讀取RSS feed源的代碼(帶注釋,可讀取多個源)

PHP讀取RSS feed源的代碼(帶注釋,可讀取多個源)

編輯:PHP綜合

因為網站需要讀取不同來源的rss feed,寫了一個PHP程序來循環讀取rss feed,為了方便閱讀及了解程序實現過程,加上了注釋,和大家共同學習。而助易網的rss讀取就是在這個程序的基礎上稍做改造而成,主要是輸出了一個數組字符串以及解決編碼問題。

PHP源代碼及代碼詳細解釋如下:

  1. <?PHP  
  2. //RSS源地址列表數組  
  3. $rssfeed = array("http://www.jzxue.com/rss/12.XML",  
  4. "http://rss.sina.com.cn/news/allnews/sports.XML",  
  5. "http://ent.163.com/special/00031K7Q/rss_toutiao.XML",  
  6. "http://tech.163.com/special/00091JPQ/techimportant.XML");  
  7.    
  8. //設置編碼為UTF-8  
  9. header('Content-Type:text/Html;charset= UTF-8');       
  10.    
  11. for($i=0;$i<sizeof($rssfeed);$i++){//分解開始  
  12.     $buff = "";  
  13.     $rss_str="";  
  14.     //打開rss地址,並讀取,讀取失敗則中止  
  15.     $fp = fopen($rssfeed[$i],"r") or dIE("can not open $rssfeed");   
  16.     while ( !feof($fp) ) {  
  17.         $buff .= fgets($fp,4096);  
  18.     }  
  19.     //關閉文件打開  
  20.     fclose($fp);  
  21.           
  22.     //建立一個 XML 解析器  
  23.     $parser = XML_parser_create();  
  24.     //xml_parser_set_option -- 為指定 XML 解析進行選項設置  
  25.     XML_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);  
  26.     //xml_parse_into_struct -- 將 XML 數據解析到數組$values中  
  27.     XML_parse_into_struct($parser,$buff,$values,$idx);  
  28.     //xml_parser_free -- 釋放指定的 XML 解析器  
  29.     XML_parser_free($parser);  
  30.       
  31.     foreach ($values as $val) {  
  32.         $tag = $val["tag"];  
  33.         $type = $val["type"];  
  34.         $value = $val["value"];  
  35.         //標簽統一轉為小寫  
  36.         $tag = strtolower($tag);  
  37.           
  38.         if ($tag == "item" && $type == "open"){  
  39.             $is_item = 1;  
  40.         }else if ($tag == "item" && $type == "close") {  
  41.             //構造輸出字符串  
  42.             $rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />";  
  43.             $is_item = 0;  
  44.         }  
  45.         //僅讀取item標簽中的內容  
  46.         if($is_item==1){  
  47.             if ($tag == "title") {$title = $value;}          
  48.             if ($tag == "link") {$link = $value;}  
  49.         }  
  50.     }  
  51.     //輸出結果  
  52.     echo $rss_str."<br />";  
  53. }  
  54. ?> 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved