\Suin\RSSWriter
is yet another simple RSS writer library for PHP 5.4 or later. This component is Licensed under MIT license.
This library can also be used to publish Podcasts.
$feed = new Feed();
$channel = new Channel();
$channel
->title('Channel Title')
->description('Channel Description')
->url('https://blog.example.com')
->feedUrl('https://blog.example.com/rss')
->language('en-US')
->copyright('Copyright 2012, Foo Bar')
->pubDate(strtotime('Tue, 21 Aug 2012 19:50:37 +0900'))
->lastBuildDate(strtotime('Tue, 21 Aug 2012 19:50:37 +0900'))
->ttl(60)
->pubsubhubbub('https://example.com/feed.xml', 'https://pubsubhubbub.appspot.com') // This is optional. Specify PubSubHubbub discovery if you want.
->appendTo($feed);
// Blog item
$item = new Item();
$item
->title('Blog Entry Title')
->description('<div>Blog body</div>')
->contentEncoded('<div>Blog body</div>')
->url('https://blog.example.com/2012/08/21/blog-entry/')
->author('John Smith')
->pubDate(strtotime('Tue, 21 Aug 2012 19:50:37 +0900'))
->guid('https://blog.example.com/2012/08/21/blog-entry/', true)
->preferCdata(true) // By this, title and description become CDATA wrapped HTML.
->appendTo($channel);
// Podcast item
$item = new Item();
$item
->title('Some Podcast Entry')
->description('<div>Podcast body</div>')
->url('https://podcast.example.com/2012/08/21/podcast-entry/')
->enclosure('https://podcast.example.com/2012/08/21/podcast.mp3', 4889, 'audio/mpeg')
->appendTo($channel);
echo $feed; // or echo $feed->render();
Output:
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:atom="https://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>Channel Title</title>
<link>https://blog.example.com</link>
<description>Channel Description</description>
<language>en-US</language>
<copyright>Copyright 2012, Foo Bar</copyright>
<pubDate>Tue, 21 Aug 2012 10:50:37 +0000</pubDate>
<lastBuildDate>Tue, 21 Aug 2012 10:50:37 +0000</lastBuildDate>
<ttl>60</ttl>
<atom:link rel="self" href="https://example.com/feed.xml" type="application/rss+xml"/>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<item>
<title><![CDATA[Blog Entry Title]]></title>
<link>https://blog.example.com/2012/08/21/blog-entry/</link>
<description><![CDATA[<div>Blog body</div>]]></description>
<content:encoded><![CDATA[<div>Blog body</div>]]></content:encoded>
<guid>https://blog.example.com/2012/08/21/blog-entry/</guid>
<pubDate>Tue, 21 Aug 2012 10:50:37 +0000</pubDate>
<author>John Smith</author>
</item>
<item>
<title>Some Podcast Entry</title>
<link>https://podcast.example.com/2012/08/21/podcast-entry/</link>
<description><div>Podcast body</div></description>
<enclosure url="https://podcast.example.com/2012/08/21/podcast.mp3" type="audio/mpeg" length="4889"/>
</item>
</channel>
</rss>
You can install directly via Composer:
$ composer require suin/php-rss-writer
Add the following code to your composer.json
file:
{
"require": {
"suin/php-rss-writer": ">=1.0"
}
}
...and run composer to install it:
$ composer install
Finally, include vendor/autoload.php
in your product:
require_once 'vendor/autoload.php';
The examples
directory contains usage examples for RSSWriter.
If you want to know APIs, please see FeedInterface
, ChannelInterface
and ItemInterface
.
$ vendor/bin/phpunit
$ docker-compose up
MIT license