图A |
数组元素 |
使用多个feed
一个feed怎么够呢?通过一个有点创意的代码你就可以随意添加feed了!列表F就是这样一段代码:
列表F
<html>
<head></head>
<body>
<?php
// include class
include ("RSS.php");
// set up array of RSS feeds
$feeds = array( "http://techrepublic.com.com/5150-22-0.xml",
"http://news.linux.com/news.rss",
"http://rss.slashdot.org/Slashdot/slashdot");
// retrieve each feed
// get channel information and headlines
foreach ($feeds as $f) {
$rss =& new XML_RSS($f);
$rss->parse();
$info = $rss->getChannelInfo();
$items = $rss->getItems();
// print channel information
?>
<b>The latest from <a href="<?php echo $info['link']; ?>"><?php echo $info['title']; ?></a></b>:
<p />
<ul>
<?php
// print headlines and descriptions
foreach ($items as $item) {
echo "<li><a href=""" . $item['link'] . """>" . $item['title'] . "</a><br />";
echo $item['description'] . "<p />";
}
?>
</ul>
<p />
<?php
}
?>
</body>
</html>
对前面一个示例代码的修改既简单又清楚。我创建了一个含有指向不同feed的URL的数组,并用了一个循环来处理这个数组,而没有在对象构造函数里硬性地将URL和feed关联在一起。循环的每次反复都会创建一个新的、带有不同源feed的XML_RSS对象;这个feed然后按照正常的方式被处理,也就是调用parse()和getItems()方法。其他的改进是getChannelInfo()方法的使用,这在前面已经讨论过,它被用来在每个标题列表的顶部动态显示feed的名称和URL。
下面就是输出结果的一个例子(图B):
图B |
不止一个RSS feed |
当然,你可以修改这个结构以便更贴切地反映你的需要。例如,脚本会即时显示每个feed里的所有新闻标题;比如,你可以把它改为只显示每个feed的前5条标题,只需要使用for()循环并在第二个嵌套层里使用一个计数器就可以了。你还可以重新格式化页面布局,以便在下拉菜单里显示新闻标题,这样就能够进行一种不同类型的浏览。试一下身手吧,玩得高兴!