【转】 PHP读取RSS feed源代码(带注释,可读取多个源)

  网站需要读取不同来源的rss feed,写了一个php程序来循环读取rss feed,为了方便阅读及了解程序实现过程,加上了注释,和大家共同学习。而助易网的rss读取就是在这个程序的基础上稍做改造而成,主要是输出了一个数组字符串以及解决编码问题。

php源代码及代码详细解释如下:

 

php
// RSS源地址列表数组
$rssfeed   =   array ( " http://www.chinaz.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   .=   " " . $link . " ' target=_blank> " . $title . " " ;
            
$is_item   =   0 ;
        }
        
// 仅读取item标签中的内容
         if ( $is_item == 1 ){
            
if  ( $tag   ==   " title " ) { $title   =   $value ;}        
            
if  ( $tag   ==   " link " ) { $link   =   $value ;}
        }
    }
    
// 输出结果
     echo   $rss_str . " " ;
}
?>


 

转载于:https://www.cnblogs.com/djbone/archive/2008/08/24/1275184.html

你可能感兴趣的:(【转】 PHP读取RSS feed源代码(带注释,可读取多个源))