生成RSS/Atom的最佳PHP库/类

21

我需要在多个应用程序中生成RSS/Atom订阅源,并且我想知道一个能够生成两种格式并已经处理所有常见问题的好的库或类。

例如,我多年来使用的那个库没有为日期设置正确的格式,因此我的订阅源无法被多个聚合器正确处理。

更新: 为什么我正在寻找一个库?因为我多年来使用的那个库,我曾经对其进行了一些修改,但现在出现了一些小问题。也许某些规范没有被正确遵循。

为什么我的RSS源会重复一些条目?

5个回答

28

PHP通用Feed生成器看起来正是您需要的 - 它有一种简单的基于面向对象的方式来声明新的Feed并将其输出到您想要的规范。

它还具有内置的日期格式转换作为其中的一个特点。

功能:

  • 生成RSS 1.0、RSS 2.0和ATOM 1.0源
  • 所有源都经过验证通过
  • 实现不同版本的合适命名空间
  • 自动转换日期格式
  • 为ATOM源生成UUID
  • 处理必需标签的CDATA编码

支持版本:

  • RSS 1.0 (正式淘汰了RSS 0.90)
  • RSS 2.0 (正式淘汰了RSS 0.91、0.92、0.93和0.94)
  • ATOM 1.0

2
如果您有兴趣让该库生成符合W3C标准的RSS1/2和Atom订阅源,我为此编写了一个补丁:http://sites.google.com/site/danchurchinc/software-patches - amphetamachine
ajaxray.com目前处于离线状态,但是该程序包可通过phpclasses.org进行下载 - feeela
@feela,感谢您的支持,答案中的链接已更新。 - ConroyP
很遗憾,它不能正常工作。 - Tom Smykowski

4

你真的需要一个库吗?选择格式并简单地遵循其规范以输出有效的XML。

这里有一些教程,可以帮助你入门。


3

对于非英文字符集,请查看PHP函数htmlentities:http://php.net/manual/en/function.htmlentities.php

我刚刚添加了对克罗地亚字符集的支持:

$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent, ENT_COMPAT, 'UTF-8');

3

在我看来,除非你需要封装,否则这两种格式都很容易制作,不需要使用任何类。例如,对于我管理的网站的RSS订阅,我只需编写一个小的Smarty模板即可,它运行得非常顺畅。


1

PHP通用Feed生成器是一个不错的选择。我只需要根据网页上的评论修改代码,以正确处理法语字符。

http://www.ajaxray.com/blog/2008/03/08/php-universal-feed-generator-supports-rss-10-rss-20-and-atom/#comment-341

就像Kereste所说(6月1日)FeedWrite会出现一些非英语utf-8字符的问题,例如ä等。这是因为xml只知道5个实体(&,",')。因此,我将源代码中的第298行更改为$nodeText .= (in_array($tagName,$this->CDATAEncoding))? $tagContent : str_replace(array('&', '"', "'", ""), array('&', '"', ''', '<', '>'), $tagContent);以避免将字符转换为错误的xml实体。

2
如果类不支持W3C格式并且在UTF-8方面存在问题,那么它就不会是好的选择... - feeela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接