• 分享一个RSS类


    RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
    RSS的作用,就是帮助用户快速筛选获取网站最新更新的自己喜欢的内容,节省了到网站去搜寻的时间。似乎博客总是少不了RSS,下面分享一个我在WBlog程序中使用的一个RSS类
    完整的代码:

    <?php
    
    // +----------------------------------------------------------------------
    
    // | YBlog
    
    // +----------------------------------------------------------------------
    
    // | Copyright (c) 2008 http://www.yhustc.com All rights reserved.
    
    // +----------------------------------------------------------------------
    
    // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
    
    // +----------------------------------------------------------------------
    
    // | Author: yhustc <yhustc@gmail.com>
    
    // +----------------------------------------------------------------------
    
    // $Id$
    
     
    
    /**
    
     +------------------------------------------------------------------------------
    
     * RSS生成类
    
     +------------------------------------------------------------------------------
    
     * @author    yhustc <yhustc@gmail.com>
    
     * @version   $Id$
    
     +------------------------------------------------------------------------------
    
     */
    
    class RSS
    
    {
    
        /**
    
         +----------------------------------------------------------
    
         * RSS频道名
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $channel_title = '';
    
        /**
    
         +----------------------------------------------------------
    
         * RSS频道链接
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $channel_link = '';
    
        /**
    
         +----------------------------------------------------------
    
         * RSS频道描述
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $channel_description = '';
    
        /**
    
         +----------------------------------------------------------
    
         * RSS频道使用的小图标的URL
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $channel_imgurl = '';
    
        /**
    
         +----------------------------------------------------------
    
         * RSS频道所使用的语言
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $language = 'zh_CN';
    
        /**
    
         +----------------------------------------------------------
    
         * RSS文档创建日期,默认为今天
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $pubDate = '';
    
        protected $lastBuildDate = '';
    
     
    
        protected $generator = 'YBlog RSS Generator';
    
     
    
        /**
    
         +----------------------------------------------------------
    
         * RSS单条信息的数组
    
         +----------------------------------------------------------
    
         * @var string
    
         * @access protected
    
         +----------------------------------------------------------
    
         */
    
        protected $items = array();
    
     
    
        /**
    
         +----------------------------------------------------------
    
         * 构造函数
    
         +----------------------------------------------------------
    
         * @access public 
    
         +----------------------------------------------------------
    
         * @param string $title  RSS频道名
    
         * @param string $link  RSS频道链接
    
         * @param string $description  RSS频道描述
    
         * @param string $imgurl  RSS频道图标
    
         +----------------------------------------------------------
    
         */
    
        public function __construct($title, $link, $description, $imgurl = '')
    
        {
    
            $this->channel_title = $title;
    
            $this->channel_link = $link;
    
            $this->channel_description = $description;
    
            $this->channel_imgurl = $imgurl;
    
            $this->pubDate = Date('Y-m-d H:i:s', time());
    
            $this->lastBuildDate = Date('Y-m-d H:i:s', time());
    
        }
    
     
    
        /**
    
         +----------------------------------------------------------
    
         * 设置私有变量
    
         +----------------------------------------------------------
    
         * @access public 
    
         +----------------------------------------------------------
    
         * @param string $key  变量名
    
         * @param string $value  变量的值
    
         +----------------------------------------------------------
    
         */
    
         public function Config($key,$value)
    
         {
    
            $this->{$key} = $value;
    
         }
    
     
    
        /**
    
         +----------------------------------------------------------
    
         * 添加RSS项
    
         +----------------------------------------------------------
    
         * @access public 
    
         +----------------------------------------------------------
    
         * @param string $title  日志的标题
    
         * @param string $link  日志的链接
    
         * @param string $description  日志的摘要
    
         * @param string $pubDate  日志的发布日期
    
         +----------------------------------------------------------
    
         */
    
         function AddItem($title, $link, $description, $pubDate)
    
         {
    
            $this->items[] = array('title' => $title, 'link' => $link, 'description' => $description, 'pubDate' => $pubDate);
    
         }
    
     
    
         /**
    
         +----------------------------------------------------------
    
         * 输出RSS的XML为字符串
    
         +----------------------------------------------------------
    
         * @access public 
    
         +----------------------------------------------------------
    
         * @return string
    
         +----------------------------------------------------------
    
         */
    
        public function Fetch()
    
        {
    
            $rss = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n";
    
            $rss = "<rss version=\"2.0\">\r\n";
    
            $rss .= "<channel>\r\n";
    
            $rss .= "<title><![CDATA[{$this->channel_title}]]></title>\r\n";
    
            $rss .= "<description><![CDATA[{$this->channel_description}]]></description>\r\n";
    
            $rss .= "<link>{$this->channel_link}</link>\r\n";
    
            $rss .= "<language>{$this->language}</language>\r\n";
    
     
    
            if (!empty($this->pubDate))
    
                $rss .= "<pubDate>{$this->pubDate}</pubDate>\r\n";
    
            if (!empty($this->lastBuildDate))
    
                $rss .= "<lastBuildDate>{$this->lastBuildDate}</lastBuildDate>\r\n";
    
            if (!empty($this->generator))
    
                $rss .= "<generator>{$this->generator}</generator>\r\n";
    
     
    
            $rss .= "<ttl>5</ttl>\r\n";
    
     
    
            if (!empty($this->channel_imgurl)) {
    
                $rss .= "<image>\r\n";
    
                $rss .= "<title><![CDATA[{$this->channel_title}]]></title>\r\n";
    
                $rss .= "<link>{$this->channel_link}</link>\r\n";
    
                $rss .= "<url>{$this->channel_imgurl}</url>\r\n";
    
                $rss .= "</image>\r\n";
    
            }
    
     
    
            for ($i = 0; $i < count($this->items); $i++) {
    
                $rss .= "<item>\r\n";
    
                $rss .= "<title><![CDATA[{$this->items[$i]['title']}]]></title>\r\n";
    
                $rss .= "<link>{$this->items[$i]['link']}</link>\r\n";
    
                $rss .= "<description><![CDATA[{$this->items[$i]['description']}]]></description>\r\n";
    
                $rss .= "<pubDate>{$this->items[$i]['pubDate']}</pubDate>\r\n";
    
                $rss .= "</item>\r\n";
    
            }
    
     
    
            $rss .= "</channel>\r\n</rss>";
    
            return $rss;
    
        }
    
     
    
        /**
    
         +----------------------------------------------------------
    
         * 输出RSS的XML到浏览器
    
         +----------------------------------------------------------
    
         * @access public 
    
         +----------------------------------------------------------
    
         * @return void
    
         +----------------------------------------------------------
    
         */
    
        public function Display()
    
        {
    
            header("Content-Type: text/xml; charset=utf-8");
    
            echo $this->Fetch();
    
            exit;
    
        }
    
    }
    
    ?>
    

     在thinkphp控制器中的调用方法

    <?php
    02 class FeedAction extends Action {
    03    
    04     // 首页
    05     public function index() {
    06         $Bloginfo = M('Bloginfo')->find();//查询bloginfo表的一行记录
    07            
    08               $Bloglist = D('News')->order('id')->limit(10)->select();//查询news表的记录
    09                  
    10           import("@.ORG.Rss");//加载Rss.class.php类文件,我放在前台项目Lib/ORG目录中。
    11                  
    12               $RSS = new RSS($Bloginfo['name'],'',$Bloginfo['description'],'');//初始化类,给RSS加上标题及描述信息,具体参数看构造器__construct
    13                  
    14               foreach($Bloglist as $list){ //遍历$Bloglist 
    15                 $RSS->AddItem($list['title'],U('/Web/'.$list['id']),$list['content'],$list['ctime']);
    16               }
    17               $RSS->Display();//输出日记列表,不需要模板。
    18     }
    19        
    20    }
    21    
    22 ?>

    本文地址:http://www.w3note.com/web/56.html 

    专注于手机端的app,小程序,H5以及微信公众号提供解决方案
  • 相关阅读:
    sql server 函数的自定义
    MVC View小技巧
    存储过程实例《转载》
    用递归方法求n!
    八皇后问题之我的理解
    蓝桥杯:排它平方数-java
    谷歌统计使用代码部署和事件API使用
    网站自动登录功能的设计
    通过js来设置cookie和读取cookie,实现登陆时记住密码的功能
    QQ互联第三方登陆 redirect uri is illegal(100010)
  • 原文地址:https://www.cnblogs.com/ewblgo/p/2973182.html
Copyright © 2020-2023  润新知