我有一个php文件设置来提取 ONE XML数据Feed,我想要做的是加载最多4个Feed,如果可能的话,也选择一个随机项。然后将其解析为jQuery News Ticker。
我目前的PHP如下......
<?php
$feed = new DOMDocument();
$feed->load('/feed');
$json = array();
$json['title'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
$json['description'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
$json['link'] = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
$items = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('item');
$json['item'] = array();
$i = 0;
foreach($items as $item) {
$title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
$description = $item->getElementsByTagName('description')->item(0)->firstChild->nodeValue;
$pubDate = $item->getElementsByTagName('pubDate')->item(0)->firstChild->nodeValue;
$guid = $item->getElementsByTagName('guid')->item(0)->firstChild->nodeValue;
$json['item'][$i++]['title'] = $title;
$json['item'][$i++]['description'] = $description;
$json['item'][$i++]['pubdate'] = $pubDate;
$json['item'][$i++]['guid'] = $guid;
echo '<li class="news-item"><a href="#">'.$title.'</a></li>';
}
//echo json_encode($json);
?>
如何修改此项以将多个Feed加载到文件中?
提前致谢
答案 0 :(得分:1)
执行此操作的最简单方法是围绕您拥有的代码包装另一个循环。这不是最干净的方式,但可能就足够了。
总的来说,IMO,首先要学习语言的基础知识总是有益的。例如。 PHP manual on foreach
这大致是循环需要的样子:
$my_feeds = array("http://.....", "http://.....", "http://.....");
foreach ($my_feeds as $my_feed)
{
// This is where your code starts
$feed = new DOMDocument();
$feed->load($my_feed); <--------------- notice the variable
$json = array();
... and the rest of the code
}
这将遍历$my_feeds
中的所有网址,打开RSS源,从中获取所有项目,然后输出。
答案 1 :(得分:0)
如果我正确地阅读你的问题,你可能想要做的是将你的代码变成一个函数,然后你将在每个url的foreach循环中运行(你可以存储在一个数组或其他数据结构中) )。
编辑:如果您对功能知之甚少,本教程部分可能会对您有所帮助。 http://devzone.zend.com/9/php-101-part-6-functionally-yours/