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跳转页面的几种实现方法详解
Jun 08 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
php读取mysql的简单实例
2014/01/15 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
vue路由中前进后退的一些事儿
2019/05/18 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
python中nan与inf转为特定数字方法示例
2017/05/11 Python
使用Python来开发微信功能
2018/06/13 Python
python 字符串只保留汉字的方法
2018/11/16 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
财务会计专业推荐信
2013/11/30 职场文书
财务会计专业求职信
2014/06/09 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
情感电台广播稿
2015/08/18 职场文书
送给客户微信问候语!
2019/07/04 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis