Home  >  Article  >  Backend Development  >  PHP implements RSS subscription class

PHP implements RSS subscription class

伊谢尔伦
伊谢尔伦Original
2016-11-29 10:21:361375browse

<?php
class RSS
{
    /**
    +----------------------------------------------------------
     * RSS频道名
     +----------------------------------------------------------
     */
    protected $channel_title = &#39;&#39;;
    /**
     +----------------------------------------------------------
     * RSS频道链接
     +----------------------------------------------------------
     */
    protected $channel_link = &#39;&#39;;
    /**
     +----------------------------------------------------------
     * RSS频道描述
     +----------------------------------------------------------
     */
    protected $channel_description = &#39;&#39;;
    /**
     +----------------------------------------------------------
     * RSS频道使用的小图标的URL
     +----------------------------------------------------------
     */
    protected $channel_imgurl = &#39;&#39;;
    /**
     +----------------------------------------------------------
     * RSS频道所使用的语言
     +----------------------------------------------------------
     */
    protected $language = &#39;zh_CN&#39;;
    /**
     +----------------------------------------------------------
     * RSS文档创建日期,默认为今天
     +----------------------------------------------------------
     */
    protected $pubDate = &#39;&#39;;
    protected $lastBuildDate = &#39;&#39;;
  
    protected $generator = &#39;YBlog RSS Generator&#39;;
  
    /**
     +----------------------------------------------------------
     * RSS单条信息的数组
     +----------------------------------------------------------
     */
    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 = &#39;&#39;)
    {
        $this->channel_title = $title;
        $this->channel_link = $link;
        $this->channel_description = $description;
        $this->channel_imgurl = $imgurl;
        $this->pubDate = Date(&#39;Y-m-d H:i:s&#39;, time());
        $this->lastBuildDate = Date(&#39;Y-m-d H:i:s&#39;, 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(&#39;title&#39; => $title, &#39;link&#39; => $link, &#39;description&#39; => $description, &#39;pubDate&#39; => $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][&#39;title&#39;]}]]></title>\r\n";
            $rss .= "<link>{$this->items[$i][&#39;link&#39;]}</link>\r\n";
            $rss .= "<description><![CDATA[{$this->items[$i][&#39;description&#39;]}]]></description>\r\n";
            $rss .= "<pubDate>{$this->items[$i][&#39;pubDate&#39;]}</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;
    }
}
?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn