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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
php实现比较全的数据库操作类
Jun 18 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
php常量详细解析
2015/10/27 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
JQuery操作textarea,input,select,checkbox方法
2015/09/02 Javascript
window.onload使用指南
2015/09/13 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
vue组件间通信解析
2017/03/01 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
django的ORM操作 增加和查询
2019/07/26 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
外贸业务员岗位职责
2013/11/24 职场文书
亲属关系公证书
2014/04/08 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书