php实现的RSS生成类实例

5年以前  |  阅读数:860 次  |  编程语言:PHP 

本文实例讲述了php实现的RSS生成类。分享给大家供大家参考。具体如下:


    class RSS
    {
     var $title;
     var $link;
     var $description;
     var $language = "en-us";
     var $pubDate;
     var $items;
     var $tags;
     function RSS()
     {
      $this->items = array();
      $this->tags = array();
     }
     function addItem($item)
     {
      $this->items[] = $item;
     }
     function setPubDate($when)
     {
      if(strtotime($when) == false)
       $this->pubDate = date("D, d M Y H:i:s ", $when) . "GMT";
      else
       $this->pubDate = date("D, d M Y H:i:s ", strtotime($when)) . "GMT";
     }
     function getPubDate()
     {
      if(empty($this->pubDate))
       return date("D, d M Y H:i:s ") . "GMT";
      else
       return $this->pubDate;
     }
     function addTag($tag, $value)
     {
      $this->tags[$tag] = $value;
     }
     function out()
     {
      $out = $this->header();
      $out .= "<channel>\n";
      $out .= "<title>" . $this->title . "</title>\n";
      $out .= "<link>" . $this->link . "</link>\n";
      $out .= "<description>" . $this->description . "</description>\n";
      $out .= "<language>" . $this->language . "</language>\n";
      $out .= "<pubDate>" . $this->getPubDate() . "</pubDate>\n";
      foreach($this->tags as $key => $val) $out .= "<$key>$val</$key>\n";
      foreach($this->items as $item) $out .= $item->out();
      $out .= "</channel>\n";
      $out .= $this->footer();
      $out = str_replace("&", "&", $out);
      return $out;
     }
     function serve($contentType = "application/xml")
     {
      $xml = $this->out();
      header("Content-type: $contentType");
      echo $xml;
     }
     function header()
     {
      $out = '<?xml version="1.0" encoding="utf-8"?>' . "\n";
      $out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">' . "\n";
      return $out;
     }
     function footer()
     {
      return '</rss>';
     }
    }
    class RSSItem
    {
     var $title;
     var $link;
     var $description;
     var $pubDate;
     var $guid;
     var $tags;
     var $attachment;
     var $length;
     var $mimetype;
     function RSSItem()
     { 
      $this->tags = array();
     }
     function setPubDate($when)
     {
      if(strtotime($when) == false)
       $this->pubDate = date("D, d M Y H:i:s ", $when) . "GMT";
      else
       $this->pubDate = date("D, d M Y H:i:s ", strtotime($when)) . "GMT";
     }
     function getPubDate()
     {
      if(empty($this->pubDate))
       return date("D, d M Y H:i:s ") . "GMT";
      else
       return $this->pubDate;
     }
     function addTag($tag, $value)
     {
      $this->tags[$tag] = $value;
     }
     function out()
     {
      $out .= "<item>\n";
      $out .= "<title>" . $this->title . "</title>\n";
      $out .= "<link>" . $this->link . "</link>\n";
      $out .= "<description>" . $this->description . "</description>\n";
      $out .= "<pubDate>" . $this->getPubDate() . "</pubDate>\n";
      if($this->attachment != "")
       $out .= "<enclosure url='{$this->attachment}' length='{$this->length}' type='{$this->mimetype}' />";
      if(empty($this->guid)) $this->guid = $this->link;
      $out .= "<guid>" . $this->guid . "</guid>\n";

      foreach($this->tags as $key => $val) $out .= "<$key>$val</$key\n>";
      $out .= "</item>\n";
      return $out;
     }
     function enclosure($url, $mimetype, $length)
     {
      $this->attachment = $url;
      $this->mimetype  = $mimetype;
      $this->length   = $length;
     }
    }

使用示例如下:


    $feed = new RSS();
    $feed->title    = "RSS Feed Title";
    $feed->link    = "http://website.com";
    $feed->description = "Recent articles on your website.";
    $db->query($query);
    $result = $db->result;
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
      $item = new RSSItem();
      $item->title = $title;
      $item->link = $link;
      $item->setPubDate($create_date); 
      $item->description = "<![CDATA[ $html ]]>";
      $feed->addItem($item);
    }
    echo $feed->serve();

希望本文所述对大家的php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例