`
天梯梦
  • 浏览: 13730216 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

PHP RSS/Feed 生成类库(支持RSS 1.0/2.0和ATOM)

阅读更多

通用PHP RSS/Feed 生成类库(支持RSS 1.0/2.0和ATOM)
PHP Universal Feed Generator (supports RSS 1.0, RSS 2.0 and ATOM)

下载 : FeedWriter

 

可 生成的RSS版本:

  • RSS 1.0 (which officially obsoleted RSS 0.90)
  • RSS 2.0 (which officially obsoleted RSS 0.91, 0.92, 0.93 and 0.94)
  • ATOM 1.0

功能:

  • 可生成RSS 1.0, RSS 2.0 和ATOM 1.0 feeds
  • 所有生成的Feed可经过验证 feed validator .
  • 支 持所有Feed属性.
  • 容易的设置channel 和 feed 条目
  • 为不同的版本使用命名空间.
  • 自 动转换日期格式.
  • 为ATOM feeds生成 UUID (通用唯一标识符 Universally Unique Identifier).
  • 支持子标签和子标签属性. (如: image 和 encloser tags)
  • 完全的 PHP5面向对像构造 class structure.
  • 为需要的标签CDATA 编码.
  • 使用差不多的代码生成所有 版本的feed

使用范例:

 

<?php
  // This is a minimum example of using the class
  include("FeedWriter.php");
 
  //Creating an instance of FeedWriter class.
  $TestFeed = new FeedWriter(RSS2);
 
  //Setting the channel elements
  //Use wrapper functions for common channel elements
  $TestFeed->setTitle('Testing & Checking the RSS writer class');
  $TestFeed->setLink('http://www.ajaxray.com/projects/rss');
  $TestFeed->setDescription('This is test of creating a RSS 2.0 feed Universal Feed Writer');
 
  //Image title and link must match with the 'title' and 'link' channel elements for valid RSS 2.0
  $TestFeed->setImage('Testing the RSS writer class','http://www.ajaxray.com/projects/rss','http://www.rightbrainsolution.com/images/logo.gif');
 
    //Detriving informations from database addin feeds
    $db->query($query);
    $result = $db->result;
 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        //Create an empty FeedItem
        $newItem = $TestFeed->createNewItem();
        
        //Add elements to the feed item   
        $newItem->setTitle($row['title']);
        $newItem->setLink($row['link']);
        $newItem->setDate($row['create_date']);
        $newItem->setDescription($row['description']);
        
        //Now add the feed item
        $TestFeed->addItem($newItem);
    }
 
  //OK. Everything is done. Now genarate the feed.
  $TestFeed->genarateFeed();
 
?>
 

补充:
另一个生成RSS 2.0的PHP Class   
下载: class_rss_writer.php

 

<?php
 
/**
 * 使用范例:
 * ==============================================================
    $feed = new RSS();
    $feed->title       = "RSS Feed Title";
    $feed->link        = "http://www.newyork.com/";
    $feed->description = "Recent articles on newyork.com.";
 
    $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();
 * ==============================================================
 */
 
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("&", "&amp;", $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;
    }
}
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Rss.Net类库

    2. **兼容性**:支持RSS 0.91、0.92、1.0、2.0以及Atom 0.3和1.0等不同版本的feed格式,确保了与其他系统的广泛兼容性。 3. **扩展性**:Rss.Net设计时考虑到了扩展性,允许用户自定义feed元素,以适应特定的需求或...

    C#写的RSS新闻阅读器,

    开发者可能利用了C#中的类库,如System.Xml,来处理XML解析,因为RSS和Atom feed本质上都是XML文档。 描述中提到的“可订阅RSS订阅”意味着这个新闻阅读器能够管理用户的订阅列表,让用户可以轻松添加新的RSS或Atom...

    20个PHP常用类库

    本文将深入探讨20个在PHP开发中极为常见的类库,涵盖图表生成、RSS解析、缩略图生成、支付处理、OpenID支持以及数据抽象和对象关系映射(ORM)等多个方面。 #### 图表生成类库 1. **pChart** - 这是一个功能强大的...

    RSS发布(生成XML)和读取URL

    标题中的“RSS发布(生成XML)和读取URL”指的是RSS(Really Simple Syndication)技术的应用,这是一种标准化的XML格式,用于发布新闻提要、博客文章等更新内容,使得用户可以方便地订阅和获取信息。RSS发布涉及创建...

    RssToolkit-1-0-0-1

    这个工具包的核心在于其对RSS标准的全面支持,包括RSS 0.91、RSS 1.0、RSS 2.0以及Atom 1.0等版本,确保了与各种RSS源的兼容性。 首先,让我们了解一下RssToolkit的主要功能。它提供了RSS Feed的读取、解析、创建和...

    简单的rss实现(C#)

    在C#中实现RSS,你可以利用.NET Framework提供的类库来创建和解析RSS feed。本教程将引导你理解RSS的基本概念,并教你如何使用C#编写一个简单的RSS阅读器或生成器。 1. **RSS基础知识** - RSS是一种XML数据格式,...

    网页获取RSS测试用例

    4. **RSS结构**:理解RSS的结构很重要,一个基本的RSS 2.0 feed包含频道(channel)和项(item)两个部分。频道包含关于整个feed的信息,如标题、描述和链接;项则是具体的新闻或文章,每个项都有自己的标题、描述、...

    C#开发的rss新闻阅读器

    例如,可以增加支持RSS 2.0和Atom两种格式的能力,或者实现多线程下载以提高性能。还可以集成到其他平台,如桌面、移动设备甚至是Web应用,利用ASP.NET或其他Web框架。 总之,"C#开发的rss新闻阅读器"是一个实践性...

    20个非常有用的PHP类库 加速php开发

    以下是一些非常有用的PHP类库,涉及图表创建、RSS解析、缩略图生成、支付处理、OpenID支持、对象关系映射(ORM)、PDF生成、Excel操作以及邮件发送等多个领域。 1. **图表库**: - pChart:提供了创建统计图表的...

    RSS新闻阅读器(仿新浪的RSS制作)

    2. ** SyndicationFeed 类**:.NET Framework 提供的System.ServiceModel.Syndication命名空间中的SyndicationFeed类,专门用于处理RSS和Atom feed。通过这个类,我们可以方便地读取、创建和修改RSS源。 3. **HTTP...

    news Reader 新闻阅读器.rar

    《新闻阅读器——基于C#和面向对象编程的RSS与Atom格式支持》 在信息技术领域,新闻阅读器是一种常见的应用程序,它允许用户订阅并管理来自多个来源的新闻更新,通常是通过RSS(Really Simple Syndication)或Atom...

    基于.NET的RSS阅读器

    在.NET环境中,我们可以利用丰富的类库和工具来简化RSS解析和处理的过程。 1. **.NET Framework基础** .NET Framework是由微软开发的软件框架,它提供了执行和创建Windows应用程序所需的类库和服务。在这个项目中...

    c#编写的简单新闻阅读器

    在C#中,我们可以使用System.ServiceModel.Syndication命名空间下的类来解析和生成这两种格式的feed。例如, SyndicationFeed类用于表示RSS或ATOM feed,SyndicationItem代表单个新闻条目。 【XML文档对象模型(DOM...

    南方学院、南方IT教育、XML课件

    第五章“RSS和Atom”是两种常见的XML feed格式,用于发布和订阅网络内容。RSS(Really Simple Syndication)和Atom都是数据聚合和分发的标准,适用于博客、新闻和其他在线内容的推送。你将了解它们的结构、如何创建...

    TXQPHP_v1.2_php_

    - `feed.php`:可能用于生成RSS或Atom订阅源,让用户可以订阅博客更新。 - `link.php`:可能处理链接请求,如友链管理。 - `index.php`:网站的入口文件,负责处理请求和渲染页面。 - `myphp1.2.sql`:数据库...

    php 常用类整理

    - **SimplePie**:高效且易于使用的RSS和Atom解析库,适合快速解析和显示RSS feed。 3. **缩略图生成** - **phpThumb**:功能强大的PHP类库,可以自定义生成各种尺寸和效果的缩略图,满足复杂的需求。 4. **支付...

    php 常用类汇总 推荐收藏

    本文将详细介绍一些PHP中常用的类库,包括图表库、RSS解析、缩略图生成、支付处理、OpenID支持、对象关系映射(ORM)、PDF生成器、Excel相关工具以及电子邮件处理和单元测试工具。 1. **图表库**: - **pChart**:...

Global site tag (gtag.js) - Google Analytics