返回PHP不工作的json数组

返回PHP不工作的json数组,php,arrays,json,Php,Arrays,Json,我试图在解析rss提要后返回一个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();

我试图在解析rss提要后返回一个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']);

?>

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

一些项目没有
标记,因此脚本在尝试访问
url
属性时会出错。你需要检查一下这个

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

有些项目没有
标记,因此脚本在尝试访问
url
属性时出错。你需要检查一下这个

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

有些项目没有
标记,因此脚本在尝试访问
url
属性时出错。你需要检查一下这个

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

有些项目没有
标记,因此脚本在尝试访问
url
属性时出错。你需要检查一下这个

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

您的代码返回请求状态“状态代码:500内部服务器错误”

您可以通过浏览浏览器web工具的“网络”选项卡轻松查看它

这是因为在第三篇文章中没有图像

<?php
    // Json Header
    header('Content-Type: application/json');

    // Get Feed
    $feed = new DOMDocument();
    $feed->load('http://www.espnfc.com/rss');

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

    // My json object
    $json = array();
    $json['item'] = array();

    // For each item
    foreach($items as $item){
        // Get title
        $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
        // Get link
        $link = $item->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
        // Get image if it exist
        $img = $item->getElementsByTagName('enclosure');
        if($img->length>0){
            $img = $img->item(0)->attributes->getNamedItem('url')->value;
        } else {
            $img = "";
        }

        array_push($json['item'], array(
            "title" => preg_replace('/(\n|\r|\t|\')/', ' ', $title),
            "link" => preg_replace('/(\n|\r|\t|\')/', ' ', $link),
            "img" => preg_replace('/(\n|\r|\t|\')/', ' ', $img)
        ));
    }
    echo json_encode($json['item']);
?>

您的代码返回请求状态“状态代码:500内部服务器错误”

您可以通过浏览浏览器web工具的“网络”选项卡轻松查看它

这是因为在第三篇文章中没有图像

<?php
    // Json Header
    header('Content-Type: application/json');

    // Get Feed
    $feed = new DOMDocument();
    $feed->load('http://www.espnfc.com/rss');

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

    // My json object
    $json = array();
    $json['item'] = array();

    // For each item
    foreach($items as $item){
        // Get title
        $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
        // Get link
        $link = $item->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
        // Get image if it exist
        $img = $item->getElementsByTagName('enclosure');
        if($img->length>0){
            $img = $img->item(0)->attributes->getNamedItem('url')->value;
        } else {
            $img = "";
        }

        array_push($json['item'], array(
            "title" => preg_replace('/(\n|\r|\t|\')/', ' ', $title),
            "link" => preg_replace('/(\n|\r|\t|\')/', ' ', $link),
            "img" => preg_replace('/(\n|\r|\t|\')/', ' ', $img)
        ));
    }
    echo json_encode($json['item']);
?>

您的代码返回请求状态“状态代码:500内部服务器错误”

您可以通过浏览浏览器web工具的“网络”选项卡轻松查看它

这是因为在第三篇文章中没有图像

<?php
    // Json Header
    header('Content-Type: application/json');

    // Get Feed
    $feed = new DOMDocument();
    $feed->load('http://www.espnfc.com/rss');

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

    // My json object
    $json = array();
    $json['item'] = array();

    // For each item
    foreach($items as $item){
        // Get title
        $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
        // Get link
        $link = $item->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
        // Get image if it exist
        $img = $item->getElementsByTagName('enclosure');
        if($img->length>0){
            $img = $img->item(0)->attributes->getNamedItem('url')->value;
        } else {
            $img = "";
        }

        array_push($json['item'], array(
            "title" => preg_replace('/(\n|\r|\t|\')/', ' ', $title),
            "link" => preg_replace('/(\n|\r|\t|\')/', ' ', $link),
            "img" => preg_replace('/(\n|\r|\t|\')/', ' ', $img)
        ));
    }
    echo json_encode($json['item']);
?>

您的代码返回请求状态“状态代码:500内部服务器错误”

您可以通过浏览浏览器web工具的“网络”选项卡轻松查看它

这是因为在第三篇文章中没有图像

<?php
    // Json Header
    header('Content-Type: application/json');

    // Get Feed
    $feed = new DOMDocument();
    $feed->load('http://www.espnfc.com/rss');

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

    // My json object
    $json = array();
    $json['item'] = array();

    // For each item
    foreach($items as $item){
        // Get title
        $title = $item->getElementsByTagName('title')->item(0)->firstChild->nodeValue;
        // Get link
        $link = $item->getElementsByTagName('link')->item(0)->firstChild->nodeValue;
        // Get image if it exist
        $img = $item->getElementsByTagName('enclosure');
        if($img->length>0){
            $img = $img->item(0)->attributes->getNamedItem('url')->value;
        } else {
            $img = "";
        }

        array_push($json['item'], array(
            "title" => preg_replace('/(\n|\r|\t|\')/', ' ', $title),
            "link" => preg_replace('/(\n|\r|\t|\')/', ' ', $link),
            "img" => preg_replace('/(\n|\r|\t|\')/', ' ', $img)
        ));
    }
    echo json_encode($json['item']);
?>


print_r($json['item'][0])显示了什么?也许你应该做
echo-json\u-encode($json)。我们需要查看您在客户端中如何访问它。客户端是以数组的形式访问结果,还是尝试访问
结果。item
?@Barmar作为一个数组,它必须以数组开始[并以数组结束]请参见我的编辑,我将整个code@koca79331什么也看不出来。我编辑了我的问题,我把所有的代码都放在了什么是show print_r($json['item'][0])?也许你应该做
echo-json\u-encode($json)。我们需要查看您在客户端中如何访问它。客户端是以数组的形式访问结果,还是尝试访问
结果。item
?@Barmar作为一个数组,它必须以数组开始[并以数组结束]请参见我的编辑,我将整个code@koca79331什么也看不出来。我编辑了我的问题,我把所有的代码都放在了什么是show print_r($json['item'][0])?也许你应该做
echo-json\u-encode($json)。我们需要查看您在客户端中如何访问它。客户端是以数组的形式访问结果,还是尝试访问
结果。item
?@Barmar作为一个数组,它必须以数组开始[并以数组结束]请参见我的编辑,我将整个code@koca79331什么也看不出来。我编辑了我的问题,我把所有的代码都放在了什么是show print_r($json['item'][0])?也许你应该做
echo-json\u-encode($json)。我们需要查看您在客户端中如何访问它。客户端是以数组的形式访问结果,还是尝试访问
结果。item
?@Barmar作为一个数组,它必须以数组开始[并以数组结束]请参见我的编辑,我将整个code@koca79331什么也看不出来。我编辑了我的问题,我把所有的代码