当前位置:首页 > PHP教程 > php类库 > 列表

php实现的RSS生成类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 21:51:36 浏览: 评论:0 

这篇文章主要介绍了php实现的RSS生成类,实例分析了RSS生成类的原理、定义与使用技巧,非常具有实用价值,需要的朋友可以参考下

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

  1. class RSS 
  2.  var $title
  3.  var $link
  4.  var $description
  5.  var $language = "en-us"
  6.  var $pubDate
  7.  var $items
  8.  var $tags
  9.  function RSS() 
  10.  { 
  11.   $this->items = array(); 
  12.   $this->tags = array(); 
  13.  } 
  14.  function addItem($item
  15.  { 
  16.   $this->items[] = $item
  17.  } 
  18.  function setPubDate($when
  19.  { 
  20.   if(strtotime($when) == false) 
  21.    $this->pubDate = date("D, d M Y H:i:s "$when) . "GMT"
  22.   else 
  23.    $this->pubDate = date("D, d M Y H:i:s "strtotime($when)) . "GMT"
  24.  } 
  25.  function getPubDate() 
  26.  { 
  27.   if(emptyempty($this->pubDate)) 
  28.    return date("D, d M Y H:i:s ") . "GMT"
  29.   else 
  30.    return $this->pubDate; 
  31.  } 
  32.  function addTag($tag$value
  33.  { 
  34.   $this->tags[$tag] = $value
  35.  } 
  36.  function out() 
  37.  { 
  38.   $out = $this->header(); 
  39.   $out .= "<channel>\n"
  40.   $out .= "<title>" . $this->title . "</title>\n"
  41.   $out .= "<link>" . $this->link . "</link>\n"
  42.   $out .= "<description>" . $this->description . "</description>\n"
  43.   $out .= "<language>" . $this->language . "</language>\n"
  44.   $out .= "<pubDate>" . $this->getPubDate() . "</pubDate>\n"
  45.   foreach($this->tags as $key => $val$out .= "<$key>$val</$key>\n"
  46.   foreach($this->items as $item$out .= $item->out(); 
  47.   $out .= "</channel>\n"
  48.   $out .= $this->footer(); 
  49.   $out = str_replace("&""&amp;"$out); 
  50.   return $out
  51.  } 
  52.  function serve($contentType = "application/xml"
  53.  { 
  54.   $xml = $this->out(); 
  55.   header("Content-type: $contentType"); 
  56.   echo $xml
  57.  } 
  58.  function header() 
  59.  { 
  60.   $out = '<?xml version="1.0" encoding="utf-8"?>' . "\n"
  61.   $out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">' . "\n"
  62.   return $out
  63.  } 
  64.  function footer() 
  65.  { 
  66.   return '</rss>'
  67.  } 
  68. class RSSItem 
  69.  var $title
  70.  var $link
  71.  var $description
  72.  var $pubDate
  73.  var $guid
  74.  var $tags
  75.  var $attachment
  76.  var $length
  77.  var $mimetype
  78.  function RSSItem() 
  79.  {  
  80.   $this->tags = array(); 
  81.  } 
  82.  function setPubDate($when
  83.  { 
  84.   if(strtotime($when) == false) 
  85.    $this->pubDate = date("D, d M Y H:i:s "$when) . "GMT"
  86.   else 
  87.    $this->pubDate = date("D, d M Y H:i:s "strtotime($when)) . "GMT"
  88.  } 
  89.  function getPubDate() 
  90.  { 
  91.   if(emptyempty($this->pubDate)) 
  92.    return date("D, d M Y H:i:s ") . "GMT"
  93.   else 
  94.    return $this->pubDate; 
  95.  } 
  96.  function addTag($tag$value
  97.  { 
  98.   $this->tags[$tag] = $value
  99.  } 
  100.  function out() 
  101.  { 
  102.   $out .= "<item>\n"
  103.   $out .= "<title>" . $this->title . "</title>\n"
  104.   $out .= "<link>" . $this->link . "</link>\n"
  105.   $out .= "<description>" . $this->description . "</description>\n"
  106.   $out .= "<pubDate>" . $this->getPubDate() . "</pubDate>\n"
  107.   if($this->attachment != ""
  108.    $out .= "<enclosure url='{$this->attachment}' length='{$this->length}' type='{$this->mimetype}' />"
  109.   if(emptyempty($this->guid)) $this->guid = $this->link; 
  110.   $out .= "<guid>" . $this->guid . "</guid>\n"
  111.  
  112.   foreach($this->tags as $key => $val$out .= "<$key>$val</$key\n>"
  113.   $out .= "</item>\n"
  114.   return $out
  115.  } 
  116.  function enclosure($url$mimetype$length
  117.  { 
  118.   $this->attachment = $url
  119.   $this->mimetype  = $mimetype
  120.   $this->length   = $length
  121.  } 

使用示例如下:

  1. $feed = new RSS(); 
  2. $feed->title    = "RSS Feed Title"
  3. $feed->link    = "http://website.com"
  4. $feed->description = "Recent articles on your website."
  5. $db->query($query); 
  6. $result = $db->result; 
  7. while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
  8.   $item = new RSSItem(); 
  9.   $item->title = $title
  10.   $item->link = $link
  11.   $item->setPubDate($create_date);  
  12.   $item->description = "<![CDATA[ $html ]]>"
  13.   $feed->addItem($item); 
  14. echo $feed->serve();

Tags: RSS生成类

分享到:

相关文章