suin/php-rss-writer

Yet another simple RSS writer library for PHP 5.4 or later.

Maintainers

👁 suin

Package info

github.com/suin/php-rss-writer

pkg:composer/suin/php-rss-writer

Statistics

Installs: 1 419 502

Dependents: 28

Suggesters: 0

Stars: 265

Open Issues: 8

1.6.0 2017-07-13 10:47 UTC

Requires

  • php: >=5.4.0

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 78f45e44a2a7cb0d82e4b9efb6f7b7a075b9051c

  • suin <suinyeze.woop@gmail.com>

generatorphpfeedrsswriter

This package is auto-updated.

Last update: 2026-06-06 12:24:48 UTC


README

\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.

👁 Latest Stable Version
👁 Total Downloads
👁 Daily Downloads
👁 License
👁 Build Status
👁 Codacy Badge

Quick demo

$feed = new Feed();

$channel = new Channel();
$channel
 ->title('Channel Title')
 ->description('Channel Description')
 ->url('http://blog.example.com')
 ->feedUrl('http://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('http://example.com/feed.xml', 'http://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('http://blog.example.com/2012/08/21/blog-entry/')
 ->author('John Smith')
 ->pubDate(strtotime('Tue, 21 Aug 2012 19:50:37 +0900'))
 ->guid('http://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('http://podcast.example.com/2012/08/21/podcast-entry/')
 ->enclosure('http://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="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
 <channel>
 <title>Channel Title</title>
 <link>http://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="http://example.com/feed.xml" type="application/rss+xml"/>
 <atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
 <item>
 <title><![CDATA[Blog Entry Title]]></title>
 <link>http://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>http://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>http://podcast.example.com/2012/08/21/podcast-entry/</link>
 <description>&lt;div&gt;Podcast body&lt;/div&gt;</description>
 <enclosure url="http://podcast.example.com/2012/08/21/podcast.mp3" type="audio/mpeg" length="4889"/>
 </item>
 </channel>
</rss>

Installation

Easy installation

You can install directly via Composer:

$ composer require suin/php-rss-writer

Manual installation

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';

How to use

The examples directory contains usage examples for RSSWriter.

If you want to know APIs, please see FeedInterface, ChannelInterface and ItemInterface.

How to Test

$ vendor/bin/phpunit

Test through PHP 5.4 ~ PHP 7.0

$ docker-compose up

License

MIT license