PHP调用任何网站RSS数据

14年前 5

捣鼓了一下,把www.7lau.com这站放到VPS上,然后修改了一些内容,中间的黄色区域用来调用我的博客,但是我的博客又不在同一服务器上,于是我就google之。被我找到通过调用RSS来实现数据的调用方法:

封装的RSS类,文件名设定为 rss.php,代码如下:

url=$url;
    }
    function ReadFile(){
        $fp = fopen($this->url,"r");
        while ( !feof($fp) ) {
            $this->content .= fgets($fp,4096);
        }
        fclose($fp);
    }
    function ReadXML(){
        $parser = xml_parser_create();//建立xml解析器
        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);//忽略由空白字符组成的值
        xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,'UTF-8');
//设置编码,目前只支持ISO-8859-1、US-ASCII 和 UTF-8,也可以不设置,与目标编码一致
        xml_parse_into_struct($parser,$this->content,$this->values);
        xml_parser_free($parser);
    }
    function RSS($n=10){
        $this->ReadFile();
        $this->ReadXML();
        $in_item = 0;
        $i=0;
        $read=array();
        foreach ($this->values as $value) {
            $tag = $value["tag"];
            $type = $value["type"];
            $value = $value["value"];
            $tag = strtolower($tag);
            if ($tag == "item" && $type == "open") {
                $in_item = 1;
            } else if ($tag == "item" && $type == "close"){
                $read[$i]['link']=$link;
                $read[$i]['title']=$title;
                if ($pubDate) {
                    $read[$i]['pubDate']=$pubDate;
                }
                $read[$i]['description']=$description;
                $in_item = 0;
                   $i++;
                if ($i>=$n) {
                    break;
                }
            }
            if ($in_item) {
                switch ($tag) {
                    case "title":
                        $title = $value;
                        break;
                    case "link":
                        $link = $value;
                        break;
                    case "pubDate":
                        $pubDate = $value;
                        break;
                    case "description":
                        $description = $value;
                        break;
                }
            }
        }
        return $read;
    }
}
?>

模板代码如下:




    圣郡网络-天津网站制作-天津网页设计-天津网站设计


RSS(10);
# 10 可以改成别的数字,比如5,这是读取feed的条数
foreach ($values as $value) {
    echo "";
}
?>

这个方法感觉还不错,基本上支持RSS的都可以使用。如果你还需要调用的更多内容,可以参考原文里的其他代码

5 条评论

  1. #1

    这段代码很有用

  2. #2

    嘿嘿,可以搞一个新闻聚合之类的

  3. #3

    问句题外话,元林现在用的是哪家的主机,贵不贵,什么配置?

    • @Neo 现在用的是肖恩的,不过问题很多,价格也贵,最近我买了一个VPS,准备搬过去