【转】 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   .=   " <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 /> " ;
}
?>


 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值