This class makes it easy to create an RSS Feed. I followed The Official RSS 2.0 Specifications at Harvard Law to a tee when creating this class, and the following websites were also helpful:

You don't have to worry about formatting any of your dates as we do all of that in-house. Any date that can be translated by PHP's strtotime() function will do just fine. After you're done, Validate Your RSS Feed to make sure you got things right. Finally, place the following at the top of every page that corresponds to your RSS Feed so that browsers will recognize it:

$page->link('<link rel="alternate" type="application/rss+xml" href="http://www.your-website.com/rss.xml" title="Your title" />');

This is the constructor for the class, and it takes in the three required channel elements to get your RSS feed on it's feet.

$title The name of your RSS feed.
$link The website link that corresponds to the feed.
$description A short description of your feed.
Returns An RSS object.
Example
$rss = new RSS ('My RSS Feed', 'http://www.website.com/', 'The latest news from my website.');

This method allows you to insert all of the other optional channel elements into your feed. See the examples below. You don't have to keep calling this method for every element, you can just throw everything into an array and call the method only once.

$elements Key and value pairs of channel elements, and their values.
Example
$rss->channel(array('atom:link'=>array('href'=>'http://www.website.com/rss.xml', 'rel'=>'self', 'type'=>'application/rss+xml'), 
                    'language'=>'en-us', 
                    'pubDate'=>'2010-10-28 09:52:33', 
                    'category'=>'news', 
                    'generator'=>'The awesome RSS Class at PHP-Ease.com!' 
                     ));

According to the RSS Advisory Boards recommended best practices, this atom:link should be included in your feed, and it should point to the RSS Feed URL itself.

Example
$rss->channel(array('atom:link'=>array('href'=>'http://www.website.com/rss.xml', 'rel'=>'self', 'type'=>'application/rss+xml')));

The language the channel is written in. See the Allowable values for language in RSS.

Example
$rss->channel(array('language'=>'en-us'));

A copyright notice for the channel.

Example
$rss->channel(array('copyright'=>'Copyright 2010 Website'));

The email address of who is responsible for the content.

Example
$rss->channel(array('managingEditor'=>'person@website.com'));

The email address of who is responsible for any techincal issues relating to the feed.

Example
$rss->channel(array('webMaster'=>'webmaster@website.com'));

The channel's publication date.

Example
$rss->channel(array('pubDate'=>'today'));

The last time the content in the feed changed.

Example
$rss->channel(array('lastBuildDate'=>'yesterday'));

A general category that the feed would fall under.

Example
$rss->channel(array('category'=>'news'));

Any software kudos you would like to give.

Example
$rss->channel(array('generator'=>'PHP-Ease.com RSS Class'));

A URL that points to the documentation for the format used in the RSS file.

Example
$rss->channel(array('docs'=>'http://cyber.law.harvard.edu/rss/rss.html'));

To specify a web service that supports the rssCloud interface. See SOAP meets RSS.

Example
$rss->channel(array('cloud'=>array('domain'=>'rpc.sys.com', 
                                   'port'=>80, 
                                   'path'=>'/RPC2', 
                                   'registerProcedure'=>'myCloud.rssPleaseNotify', 
                                   'protocol'=>'xml-rpc' 
                                   )));

"Time To Live" - How long (in seconds) a channel should be cached before the source is refreshed.

Example
$rss->channel(array('ttl'=>60));

A jpg, gif, or png image to display with the channel. The 'url', 'title', and 'link' values are required, the rest are optional. 'title' and 'link' should have the same values as the channel's title and link.

Example
$rss->channel(array('image'=>array('url'=>'http://www.website.com/image.jpg', 
                                   'title'=>'My RSS Feed', 
                                   'link'=>'http://www.website.com/', 
                                   'width'=>'144', // (max - default is 88) 
                                   'height'=>'400', // (max - default is 31) 
                                   'description'=>'a few thoughts...' 
                                   )));

The PICS (an outdated protocol to describe web content) rating for the channel.

Example
$rss->channel(array('rating'=>'(PICS-1.1 "http://www.classify.org/safesurf/" l r (SS~~000 1))'));

A text input box. Most aggregators ignore it. The purpose for this element is unclear.

Example
$rss->channel(array('textInput'=>array('title'=>'Search', 
                                       'description'=>'Search Google', 
                                       'link'=>'http://www.google.no/search?', 
                                       'name'=>'q' 
                                       )));

An array of hours (between 0 and 23) when you don't want aggregators to read your channel.

Example
$rss->channel(array('skipHours'=>array(16, 17, 18)));

An array of days ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') when you don't want aggregators to read your channel.

Example
$rss->channel(array('skipDays'=>array('Saturday', 'Sunday')));

This method creates an item in your feed. The only required element is either the 'title', or a 'description'. We settled on requiring a title.

$title The title of the item.
$elements Key and value pairs of item elements, and their values. See below for examples.
Example
$rss->item('Item Title', 
           array('link'=>'http://www.website.com/link.html', 
                 'description'=>'A description of the item.', 
                 'pubDate'=>'2004-08-15 16:23:42'));

The url link of the item.

Example
$elements['link'] = 'http://www.website.com/link.html';

A description of the item. To include html in your description then wrap it in CDATA tags like so:
<![CDATA[An <b>HTML</b> description.]]>

Example
$elements['description'] = 'A description of the item.';

The author's email address.

Example
$elements['author'] = 'name@website.com';

A category that the item belongs to.

Example
$elements['category'] = 'news';

A url address where comments for the item are located.

Example
$elements['comments'] = 'http://www.website.com/item.php#comments';

A media object attached to the item. All three attributes ('url, 'length', and 'type') are required.

Example
$elements['enclosure'] = array('url'=>'http://www.website.com/audio.mp3', 
                               'length'=>'12216320', 
                               'type'=>'audio/mpeg');

A "globally unique identifier" for the item. It can be a string, url, number . . . anything as long as it remains unique. If you would like to include the 'isPermaLink' attribute, just make it an array.

Example
$elements['guid'] = 'http://www.website.com/item.html'; // or . . . 
$elements['guid'] = array('isPermaLink'=>'true', 'value'=>'http://www.website.com/item.html'); // meaning this is a url that can be opened in a browser

When the item was published.

Example
$elements['pubDate'] = '2004-08-15 16:23:42';

The name (title) of the RSS channel that the item came from. It has a required 'url' attribute, so define it like so:

Example
$elements['source'] = array('url'=>'http://www.otherguys.com/rss.xml', 'value'=>"Other Guy's RSS Feed");

This method puts the whole RSS Feed together, sets the appropriate header, echo's the xml, then exits the script.

Example
$rss->display();
Download