I need an RSS Feed generator; should I use a class or should I generate the feed myself?
If I should generate it myself, where is a good place to get comprehensive specs of the standards?
If not, are there any good classes out there to do it and do it quickly and do it well?
That being said, RSS feeds have largely been replaced by simply joining the email list of the bloggers, brands or publications you want to hear from.
While they're not quite as popular as they used to be, RSS feeds are still a great way to read, manage, and navigate online information.
Follow your favorite blogs, sites, and feeds for free. RSS (it stands for Really Simple Syndication) has been around since the '90s, and it's a way for sites to publish a feed of all their content in a way that can be easily parsed and aggregated by RSS apps.
PHP Universal Feed Generator (supports RSS 1.0, RSS 2.0 and ATOM)
Features:
- Generates RSS 1.0, RSS 2.0 and ATOM 1.0 feeds
- All feeds are are validated by feed validator.
- Supports all possible feed elements.
- Simple and easy to define channel and feed items
- Implements appropriate namespaces for different versions.
- Automatically converts date formats.
- Generates UUID for ATOM feeds.
- Enables usage of subtags and attributes. (example: image and encloser tags)
- Completely Object oriented in PHP5 class structure.
- Handles CDATA encoding for required tags.
- Nearly same code for generating all kinds of feed
Examples
There will soon be a component for Zend Framework called Zend_Feed_Writer that looks pretty interesting. Here's an excerpt from a feed of one of (perhaps the?) developer of that component, Padráic Brady (link to the blog post). He says that it's currently in the Zend Framework Incubator, but that a first official version should be ready by the end of the weekend:
Zend_Feed_Writer
The new kid on the block, to be added in Zend Framework 1.10, is Zend_Feed_Writer. A bit like the older Zend_Feed_Builder classes, its purpose is to generate Atom 1.0 and RSS 2.0 feeds. The difference is that, like its sibling Zend_Feed_Reader, it is standards aware and operates entirely using PHP's DOM.
Why another feed generation component? The problem is somewhat similar to the one that Zend_Feed_Reader solved. Generating an RSS and Atom feed is far more involved than sticking a bunch of elements together - each standard has its quirks, its unique features, and its own set of best practices outside of the standards. Using Zend_Feed_Builder, you relied on two things - repetition and validation. Moving away from its core focus required more work, even to the extent of subclassing, and you were always at the mercy of misinterpreting a standard.
Zend_Feed_Writer builds on the simple API of Zend_Feed_Reader (using setters rather than getters) and the concept of having the component understand the standards (so you don't have to). The component is split across two class types - a base data container to store feed data and ensure it conforms to expected formats, and a renderer to actually generate the feeds and provide feedback on standards adherence. For example, in Atom 1.0 the omission of a title will generate an exception - a title is an obligatory element under the Atom 1.0 standard. While this could be interpreted as a nuisance, the fact is that an invalid Atom 1.0 feed is worse than useless. Better you are irritated now, than later when an online validator calls you rude names :-).
The net result of this approach is that you focus on the data, and let Zend_Feed_Writer worry about what elements and attributes to use. It should, in theory (always a grand thing), be impossible for Zend_Feed_Writer to produce an invalid feed.
Of course, we also throw in the concept of Extensions, as with Zend_Feed_Reader, allowing you to add support for RSS and Atom extensions more dynamically without the need for subclassing or API arm twisting.
If you go looking for Zend_Feed_Writer, it's currently in chunks in the Incubator. I should have it entirely integrated and functional over the weekend. You can however give it a shot for writing Atom 1.0 feeds so long as you stick to the core elements (i.e. most blog feeds). RSS 2.0 support is the last piece I need to complete in full.
This page has a decent generator meeting 1.0/2.0/ATOM spec so you could either use it (PHP5) or just get a general idea of what is needed:
Php FeedWriter
The usage notes at the bottom are fairly detailed and you don't even have to download to view source.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With