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 /> " ;
}
?>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值