-2

我正在尝试用 php 解析 rss-feed,但它什么也没给我。如您所见,我试图同时回显 $doc 和 $itemRSS 数组,但它什么也没给我,而且“成功!” 当数组中的第 0 项永远无法到达时。

如果有人能说“你有没有想过[愚蠢的错误]?”,我会很高兴,所以请考虑我这个问题的菜鸟。谢谢!

  $doc = new DOMDocument();
  $doc->load('http://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=rss');
  $arrFeeds = array();
  foreach ($doc->getElementsByTagName('item') as $node) {
    $itemRSS = array ( 
      'guid' => $node->getElementsByTagName('guid')->item(0)->nodeValue
      );
    array_push($arrFeeds, $itemRSS);
  }

    if ($itemRSS[0] != NULL) {

        echo 'Success!';

    }

echo $itemRSS;
echo $doc; 

我的意思是页面是完全空白的。没有错误,什么都没有。

更新:显然我的网络主机已停用 allow_url_fopen,所以我必须找到另一种方法来做到这一点。

4

3 回答 3

0

将这些行添加到脚本的末尾并检查它。

var_dump($itemRSS);
var_dump($arrFeeds);
var_dump($doc);

问题是知道您没有正确显示信息。

于 2012-09-04T15:50:19.463 回答
0

除了你试图回显一个对象和一个数组之外,脚本没有问题, print_r $arrFeeds 你可以看到一切

于 2012-09-04T15:58:18.660 回答
0

正如其他答案中提到的,您做错了几件事,例如尝试回显数组和对象。出于某种原因,您也没有在 $arrFeeds 中获得任何结果,尽管您应该这样做。

一个更简单的方法是将提要的渲染方法更改为 JSON:http ://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=json

然后您可以使用 json_decode() 获取所有项目的数组:

$contents = json_decode(file_get_contents('http://pipes.yahoo.com/pipes/pipe.run?_id=566903fd393811762dc74aadc701badd&_render=json'));
foreach($contents['items'] as $item) {
  // use $item['title'], $item['description'] etc... 
}

请注意,您只能回显字符串、整数等,而不能回显数组或对象等结构化数据。

为方便起见,您可以在浏览器中打开该 URL 并分析 JSON 内容@http://json.parser.online.fr/ - 然后您将看到数组的结构。

JSON 是一种更容易与 IMO 一起使用的格式。

编辑:

由于 file_get_contents() 被禁用,您可以使用 cURL(应该安装在大多数服务器上,尤其是在禁用 allow_url_fopen 的情况下):

function file_get_contents_curl($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}
于 2012-09-04T16:14:15.223 回答