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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
用PHP和ACCESS写聊天室(二)
Oct 09 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
第六章 php目录与文件操作
2011/12/30 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
pandas 将索引值相加的方法
2018/11/15 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python 日期与时间转换的方法
2020/08/01 Python
python入门教程之基本算术运算符
2020/11/13 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
自我介绍演讲稿
2014/01/15 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
高中军训感想300字
2014/03/04 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
教学副校长工作总结
2015/08/13 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
使用MybatisPlus打印sql语句
2022/04/22 SQL Server