我正在尝试从RSS源创建一个项目数组。我正在尝试通过回显第一项的标题来测试它是否正常工作。到目前为止我都没有成功......我真的很感激任何建议!
我有两个文件,'index.php'和'test.php'。
<!DOCTYPE html>
<html>
<head>
<link rel = "stylesheet" type= "text/css" href = "style.css">
</head>
<body>
<h1>TEST SLIDER</h1>
<p>First Title:<br>
<?php
include 'test.php';
$NPR_url = 'http://www.npr.org/rss/rss.php?id=1001';
$NPR = GetFeed($NPR_url);
echo $NPR[0]['title'];
?>
</p>
</body>
</html>
和'test.php'
<?php
function GetFeed($url){
$feed = new DOMDocument;
$feed->load($url);
$feed_array = array();
foreach($feed->getElementsByTagName('item') as $story){
$story_array = array (
'title' => $story->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $story->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $story->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $story->getElementsByTagName('pubDate')->item(0)->nodeValue
);
array_push($feed_array, $story_array);
}
return $feed_array;
}
?>
答案 0 :(得分:5)
解析后,DOMDocument无法获取'channel'对象。这是使用simpleXML的GetFeed()函数:
<强> test.php的强>
<?php
function GetFeed($url){
$feed = simplexml_load_file($url);
$feed_array = array();
foreach($feed->channel->item as $story){
$story_array = array (
'title' => $story->title,
'desc' => $story->description,
'link' => $story->link,
'date' => $story->date
);
array_push($feed_array, $story_array);
}
return $feed_array;
}
?>
希望它有所帮助。你的index.php将保持不变。
答案 1 :(得分:3)
试试这个::
<?php
$rss = new DOMDocument();
$rss->load($url);
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$link = $feed[$x]['link'];
$description = $feed[$x]['desc'];
$date = date('l F d, Y', strtotime($feed[$x]['date']));
echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />';
echo '<small><em>Posted on '.$date.'</em></small></p>';
echo '<p>'.$description.'</p>';
}
?>
修改:如果您正在寻找更高级的方法,可以使用David Grudl的awesome class。