php实现的RSS生成类实例


Posted in PHP onApril 23, 2015

本文实例讲述了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 相关文章推荐
php数据库抽象层 PDO
May 07 PHP
php学习之流程控制实现代码
Jun 09 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
PHP函数getenv简介和使用实例
May 12 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 PHP
php利用事务处理转账问题
Apr 22 #PHP
ThinkPHP文件缓存类代码分享
Apr 22 #PHP
php文件下载处理方法分析
Apr 22 #PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 #PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 #PHP
php文件缓存类用法实例分析
Apr 22 #PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 #PHP
You might like
php array_map()数组函数使用说明
2011/07/12 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python合并同类型excel表格的方法
2018/04/01 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
优秀干部获奖感言
2014/01/31 职场文书
四年大学自我鉴定
2014/02/17 职场文书
搞笑征婚广告词
2014/03/17 职场文书
导师推荐信范文
2014/05/09 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
董事长开业致辞
2015/07/29 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js