`
hudeyong926
  • 浏览: 2032823 次
  • 来自: 武汉
社区版块
存档分类
最新评论

PHP RSS/Feed类库

阅读更多

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

 

可 生成的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;
    }
}

SimplePie是一个非常简单、实用的Syndication数据处理工具包。使用SimplePie ,可以快速的分析阅读RSS或Atom格 式数据。之前接触的更多是MagpieRSS,SimplePie在对RSS或Atom的数据处理能力上毫不逊色于MagpieRSS,同时 SimplePie拥有了比MagpieRSS更多的实用方法和属性,这可以帮助你快速的构建一个RSS阅读器或RSS数据处理模块。

<?php
include ('simplepie/simplepie.inc');

$simplepie=new SimplePie();
$simplepie->set_feed_url('http://ggggqqqqihc.yo2.cn/feed');
$simplepie->init();
echo '<h1>'.$simplepie->get_title().'</h1>';
foreach ($simplepie->get_items() as $item){
	echo '<h2><a href="'.$item->get_permalink().'">'.$item->get_title().'</a></h2>';
	echo '<p>'.$item->get_content().'</p>';
}
?>

获取到数据之后,调用 SimplePie 提供的实用方法,就很容易组装成一个个人的RSS阅读器了。

SimplePie 设计的一个很大的不合理之处是将 items 的排序方法内置在 init 方法中,这样想使用原生数据就需通过其他方式来实现了。

 

 

分享到:
评论

相关推荐

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

    本文将详细介绍一个名为"PHP RSS/Feed 生成类库"的工具,它支持RSS 1.0、RSS 2.0和ATOM格式。 这个PHP类库的核心功能是简化RSS和Atom feed的创建过程。通过这个库,开发者可以轻松地构建结构化的数据源,使得用户...

    RSS的解析类库.zip

    发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。[1] RSS可以是以下三个解释的其中...

    php Rss 2.0 生成类

    标题提及的"php Rss 2.0 生成类",通常是指一个PHP类库,它提供了创建和管理RSS 2.0 Feed的接口和功能。这类库可以帮助开发者高效地构建RSS源,而无需深入了解RSS 2.0的XML结构。在给定的文件中,我们有两个文件:`...

    crxml:一个用于生成xml格式数据php类库,支持生成rss.zip

    `crxml` 是一个专门为PHP设计的类库,用于生成XML格式的数据,尤其值得一提的是,它还支持生成RSS(Really Simple Syndication)格式的文件,这在创建新闻聚合、博客订阅源等方面非常有用。 `crxml` 类库的核心功能...

    20个PHP常用类库

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

    php实现的RSS生成类.zip

    PHP实现的RSS生成类通常是自定义的一个类,它提供了创建和管理RSS feed的接口。这类类通常会包含以下功能: 1. 初始化RSS Feed:创建一个新的RSS feed实例,设置基本信息,如频道标题、描述、URL以及更新日期。 2....

    rss.rar_RSS_RSS PHP

    将RSS与PHP结合,可以轻松地在Web应用中集成RSS feed的生成和维护。 压缩包内的文件“rss.php”很可能是实现RSS生成功能的PHP源代码。这个文件可能包含了一个类,其中定义了方法来构建RSS 2.0的XML结构,如创建频道...

    php生成RSS订阅的方法_.docx

    这个类库提供了创建RSS feed的抽象方法,使得开发者无需手动编写XML。以下是一个使用`UniversalFeedCreator`创建RSS feed的示例: ```php require_once 'UniversalFeedCreator.class.php'; $feed = new ...

    php完美的rss生成类.zip

    总结,"php完美的rss生成类"是一个强大的工具,可以帮助开发者轻松创建符合标准的RSS feed,提高网站的互动性和可发现性。通过学习和使用这样的类库,我们可以更高效地管理和分发网站内容,提升用户体验,同时也能...

    rss.rar_class

    标题中的"rss.rar_class"可能是指一个用于处理RSS(Really Simple Syndication) feed的PHP类库,被压缩在名为"rss.rar"的文件中。这个类库可能包含了创建、解析和管理RSS源的相关功能,方便开发者在自己的项目中...

    php生成RSS类.zip

    PHP作为一款广泛应用的服务器端脚本语言,提供了许多处理RSS的库和类,方便开发者构建RSS feed。本文件“php生成RSS类.zip”提供的就是一个PHP类,帮助开发者更便捷地创建和管理RSS源。 这个PHP类可能包含了以下...

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

    - MagpieRSS:开源的PHP RSS解析器,便于读取和处理RSS feed。 - SimplePie:高效且易于使用的RSS和Atom解析库。 3. **缩略图生成**: - phpThumb:功能强大的PHP类库,可以自定义生成缩略图,满足各种需求。 4...

    php生成rss类用法实例

    `RSSBuilder` 类是一个方便的工具,它简化了在PHP中生成RSS feed的过程。 在提供的实例中,我们看到如何使用`RSSBuilder` 类来构建一个基本的RSS feed。首先,引入`rssbuilder.class.php` 文件,这是包含`...

    rss-2.0-generation-class:RSS 2.0 生成类

    RSS 2.0 生成类是专门为创建和管理符合RSS 2.0规范的XML feed而设计的一个PHP类库。RSS(Really Simple Syndication)是一种常见的数据格式,用于发布经常更新的内容,如博客文章、新闻或播客。通过使用这个类,...

    TXQPHP_v1.2_php_

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

    程序结构说明.pdf

    - `feed.php` 和 `sitemaps.php`: RSS订阅和网站地图生成。 - `good.php`, `goods_script.php`, `gallery.php`: 商品管理,包括商品详细页、商品列表和商品相册。 - `group_buy.php`: 团购活动管理。 - `index....

    php 常用类整理

    - **MagpieRSS**:开源的PHP RSS解析器,据称功能强大,可解析RSS feed并提取相关信息。 - **SimplePie**:这是一个快速且易用的RSS和Atom解析库,能高效地处理各种RSS格式的数据。 3. **缩略图生成**: - **...

    Feedcreator - PHP feeds creator-开源

    Feedcreator是一款基于PHP的开源工具,它允许开发者方便地创建RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于发布新闻、博客、播客等更新内容,使得用户可以通过RSS阅读器或聚合器订阅并获取最新...

Global site tag (gtag.js) - Google Analytics