我必须在各种应用程序中生成RSS/Atom提要,我想知道一个好的库或类,它能够同时生成这两种提要,并且已经处理了所有常见的问题。
例如,我使用了多年的一个没有正确的日期格式,所以我的订阅源没有被几个聚合器很好地处理。
更新:我为什么要找图书馆?因为我用了很多年的那个,我已经黑了好几次,有一个小问题。也许没有正确遵循规范。
为什么我的RSS源重复了一些条目?
PHP通用提要生成器似乎正是您所追求的——它有一种简单的、基于OO的方法来声明新提要并将其输出到您想要的规范。
它还具有内置的日期格式转换功能。
特点:
- 生成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)
- 原子1.0
你真的需要一个库吗?选择格式并简单地按照其规范输出有效的XML。
下面是一些入门教程。
嗯,IMO,除非你想要外壳,否则这两种格式都很容易在没有任何类的情况下制作。例如,对于我管理的网站的RSS提要,我只写了一个小的Smarty模板,它运行得很顺利。
对于非英语字符集,请查看PHP函数htmlentities:http://php.net/manual/en/function.htmlentities.php
我刚刚添加了支持克罗地亚字符集:
$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent, ENT_COMPAT, 'UTF-8');
PHP通用提要生成器是一个不错的答案。我只需要根据网页上的评论修改代码,就可以处理正确的法语字符。
http://www.ajaxray.com/blog/2008/03/08/php-universal-feed-generator-supports-rss-10-rss-20-and-atom/#comment-341
正如Kereste所说(1。六月)FeedWrite与一些非英语的人产生问题utf-8字符,如ä等。这是因为xml只知道5个实体(&,",',)。所以我在的源代码
$nodeText.=(in_array($tagName,$this->CDATAEncoding)$标签内容:str_replace(数组('&','"',"'","),数组('&','"',''','<','>'),$tagContent);
避免将字符转换为错误的xml实体。