• Register

读取并输出任意RSS源[可作数据调用]

<?php
    error_reporting(0);
    //RSS源地址列表数组
    $rssfeed = array("http://yangjunwei.com/feed","http://yangjunwei.com/t/rss.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 /><br />";
    }
?>
版权声明:转载请注明来自杨俊伟博客,本文地址:http://yangjunwei.com/a/571.html
除非注明,杨俊伟博客文章均为原创,转载请注明出处和链接!
 

发表评论 

2 条评论 »

  • Louis Han
    2011/04/01 at 21:50:53

    这个很有用

    • 头像来自 新浪微博
      nuodou
      2011/04/01 at 22:27:01

      @Louis Han 资源共享!

我还是想用邮箱注册

登录

忘记密码 ?

用第三方帐号快捷登录

已有账户?前往登录吧~

注册