返回json数组,PHP无法正常工作

时间:2015-09-10 23:07:41

标签: php arrays json

我正在尝试在解析rss feed后返回一个json数组。

这是我的代码:

<?php


header('Content-Type: application/json');
$feed = new DOMDocument();
//http://www.espnfc.com/rss
//http://www.football365.com/topical-top-10/rss
$feed->load('http://www.espnfc.com/rss');
$json = array();

$items = $feed->getElementsByTagName('channel')->item(0)->getElementsByTagName('item');

$json['item'] = array();
$i = 0;
foreach($items as $item) {
   $i = $i+1;

   $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue; 
   $link = $item->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
   $img = $item->getElementsByTagName('enclosure')->item(0)->attributes->getNamedItem('url')->value;
   //$img = $item;echo($url);

   $json['item'][] = array("title"=>str_replace(array("\n", "\r", "\t","'"), ' ', $title),"link"=>str_replace(array("\n", "\r", "\t","'"), ' ', $link),"img"=>str_replace(array("\n", "\r", "\t","'"), ' ', $img));

}
print_r($json['item'][0]);
//echo json_encode($json['item']);

?>

在迭代完所有项目后,我最终希望回应它们:

echo json_encode($json['item']);

在浏览器中没有显示任何内容的问题。但当我将这一行移到foreach集团时,它会显示结果(当然还有冗余)。

1 个答案:

答案 0 :(得分:3)

某些项目没有<enclosure>标记,因此脚本在尝试访问url属性时会收到错误消息。你需要检查一下。

$enclosures = $item->getElementsByTagName('enclosure');
if ($enclosures->length) {
    $img = $item->getElementsByTagName('enclosure')->item(0)->attributes->getNamedItem('url')->value;
} else {
    $img = '';
}