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 相关文章推荐
1.PHP简介
Oct 09 PHP
提取HTML标签
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
php实现记事本案例
Oct 20 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 26 PHP
PHP 实现链式操作
Mar 09 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设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
python连接oracle数据库实例
2014/10/17 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
python函数的5种参数详解
2017/02/24 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
python提取xml里面的链接源码详解
2019/10/15 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
计算机毕业大学生推荐信
2013/12/01 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
房地产融资计划书
2014/01/10 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
公司搬迁通知
2015/04/20 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python
java开发双人五子棋游戏
2022/05/06 Java/Android