12.12.1 Problem
You want to retrieve an RSS feed and look at the items. This allows you to
incorporate newsfeeds from multiple web sites into your application.
12.12.2 Solution
Use the PEAR
XML_RSS class. Here's an example that reads the RSS feed for the php.announce mailing list:
require 'XML/RSS.php';
$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';
$rss =& new XML_RSS($feed);
$rss->parse();
print "<ul>\n";
foreach ($rss->getItems() as $item) {
print '<li><a href="' . $item['link'] . '">' . $item['title'] . "</a></li>\n";
}
print "</ul>\n";
12.12.3 Discussion
RSS, which stands for RDF Site Summary,
is an easy-to-use headline or article syndication format
written in XML.
Many news web sites, such as Slashdot and O'Reilly's Meerkat, provide RSS feeds
that update whenever new stories are published. Weblogs have also embraced RSS
and having an RSS feed for your blog is a standard feature. The PHP web site
also publishes RSS feeds for most PHP mailing lists.
[2] RDF stands for Resource Definition Framework. RSS also stands for Rich Site Summary.
Retrieving and parsing a RSS feed is simple:
$feed = 'http://news.php.net/group.php?group=php.announce&format=rss'; $rss =& new XML_RSS($feed); $rss->parse();
This example makes $rss a new XML_RSS object
and sets the feed to the RSS feed for the php.announce mailing list. The feed is then parsed by
XML_RSS::parse( ) and
stored internally within $rss.
print "<ul>\n";
foreach ($rss->getItems() as $item) {
print '<li><a href="' . $item['link'] . '">' . $item['title'] . "</a></li>\n";
}
print "</ul>\n";
This foreach loop creates an unordered list of items
with the item title linking back to the URL associated with the complete
article, as shown in Figure
12-1. Besides the required title and link fields, an item
can have an optional description field that contains a brief write-up
about the item.
Figure 12-1. php.announce RSS feed
Each channel also has an entry with information about the feed,
as shown in Figure 12-2. To
retrieve that data, call XML_RSS::getChannelInfo( ) :
$feed = 'http://news.php.net/group.php?group=php.announce&format=rss';
$rss =& new XML_RSS($feed);
$rss->parse();
print "<ul>\n";
foreach ($rss->getChannelInfo() as $key => $value) {
print "<li>$key: $value</li>\n";
}
print "</ul>\n";

