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正确配置mysql(apache环境)
Aug 28 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php中session使用示例
Mar 29 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
100多行PHP代码实现socks5代理服务器[2]
May 05 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 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
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
组织关系转移介绍信
2014/01/16 职场文书
导游个人求职信范文
2014/03/23 职场文书
学雷锋月活动总结
2014/04/25 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
政风行风建设整改方案
2014/10/27 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
学籍证明模板
2015/06/18 职场文书
百年孤独读书笔记
2015/06/29 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
Python Django模型详解
2021/10/05 Python