Reading an RSS feed is as simple as passing the URL of the feed to Zend\Feed\Reader\Reader‘s import method.
1 | $channel = Zend\Feed\Reader\Reader::import('http://rss.example.com/channelName');
|
If any errors occur fetching the feed, a Zend\Feed\Reader\Exception\RuntimeException will be thrown.
Once you have a feed object, you can access any of the standard RSS “channel” properties directly on the object:
1 | echo $channel->getTitle();
|
Properties of the channel can be accessed via getter methods, such as getTitle, getAuthor ...
If channel properties have attributes, the getter method will return a key/value pair, where the key is the attribute name, and the value is the attribute value.
1 2 | $author = $channel->getAuthor();
echo $author['name'];
|
Most commonly you’ll want to loop through the feed and do something with its entries. Zend\Feed\Reader\Feed\Rss internally converts all entries to a Zend\Feed\Reader\Entry\Rss. Entry properties, similarly to channel properties, can be accessed via getter methods, such as getTitle, getDescription ...
An example of printing all titles of articles in a channel is:
1 2 3 | foreach ($channel as $item) {
echo $item->getTitle() . "\n";
}
|
If you are not familiar with RSS, here are the standard elements you can expect to be available in an RSS channel and in individual RSS items (entries).
Required channel elements:
Common optional channel elements:
RSS <item> elements do not have any strictly required elements. However, either title or description must be present.
Common item elements:
In your code you can always test to see if an element is non-empty with:
1 2 3 | if ($item->getPropname()) {
// ... proceed.
}
|
Where relevant, Zend\Feed supports a number of common RSS extensions including Dublin Core, Atom (inside RSS) and the Content, Slash, Syndication, Syndication/Thread and several other extensions or modules.
Please see the official RSS 2.0 specification for further information.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.