12.12. Reading RSS Feeds12.12.1. ProblemYou 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. SolutionUse 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. DiscussionRSS, which stands for RDF Site Summary, is an easy-to-use headline or article syndication format written in XML.[10] 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.
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. RSS items are then retrieved as an associative array using XML_RSS:getItems( ) : 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 feedEach 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"; Figure 12-2. php.announce RSS channel information12.12.4. See AlsoRecipe 12.5 for how to process an RSS feed and transform it to HTML; PEAR's XML_RSS class at http://pear.php.net/package-info.php?package=XML_RSS; more information on RSS at http://groups.yahoo.com/group/rss-dev/files/specification.html; O'Reilly Network's Meerkat at http://www.oreillynet.com/meerkat/ . Copyright © 2003 O'Reilly & Associates. All rights reserved. |
|