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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
PHPMYADMIN 简明安装教程 推荐
Mar 07 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 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
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
拖动一个HTML元素
2006/12/22 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
python实现在pickling的时候压缩的方法
2014/09/25 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
django有哪些好处和优点
2020/09/01 Python
python 基于opencv去除图片阴影
2021/01/26 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
美国沃尔玛网上超市:Walmart
2020/08/14 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
自我评价的正确写法
2013/09/19 职场文书
银行实习生的自我评价
2013/12/09 职场文书
银行演讲稿范文
2014/01/03 职场文书
敬老院活动总结
2014/04/28 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
金秋助学感谢信
2015/01/21 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers