因為網站需要讀取不同來源的rss feed,寫了一個php程序來循環讀取rss feed,為了方便閱讀及了解程序實現過程,加上了注釋,和大家共同學習。而助易網的rss讀取就是在這個程序的基礎上稍做改造而成,主要是輸出了一個數組字符串以及解決編碼問題。
php源代碼及代碼詳細解釋如下:
<?php
//RSS源地址列表數組 $rssfeed = array("http://www.CuoXIn.com/rss.php", "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"); //設置編碼為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); } //關閉文件打開 fclose($fp); //建立一個 XML 解析器 $parser = xml_parser_create(); //xml_parser_set_option -- 為指定 XML 解析進行選項設置 xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); //xml_parse_into_struct -- 將 XML 數據解析到數組$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"]; //標簽統一轉為小寫 $tag = strtolower($tag); if ($tag == "item" && $type == "open"){ $is_item = 1; }else if ($tag == "item" && $type == "close") { //構造輸出字符串 $rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />"; $is_item = 0; } //僅讀取item標簽中的內容 if($is_item==1){ if ($tag == "title") {$title = $value;} if ($tag == "link") {$link = $value;} } } //輸出結果 echo $rss_str."<br />"; } ?> 學習交流
熱門圖片
猜你喜歡的新聞
新聞熱點 2024-06-26 22:28:41
2024-06-26 22:26:16
2024-06-26 22:23:01
2024-06-25 19:29:23
2024-06-25 19:22:14
2024-06-25 19:19:15
疑難解答 圖片精選 |