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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
PHP配置心得包含MYSQL5乱码解决
Nov 20 PHP
初级的用php写的采集程序
Mar 16 PHP
php中禁止单个IP与ip段访问的代码小结
Jul 04 PHP
关于php内存不够用的快速解决方法
Oct 26 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PDO::quote讲解
Jan 29 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
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python中正则表达式的详细教程
2015/04/30 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
实习医生自我评价
2013/09/22 职场文书
高三高考决心书
2014/03/11 职场文书
商场租赁意向书
2014/07/30 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
初中家长评语和期望
2014/12/26 职场文书
三孔导游词
2015/02/05 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书