我正在尝试使用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;
由此我的意思是该页面完全空白。没错,没什么。
更新: 显然我的webhost已禁用allow_url_fopen,所以我必须找到另一种方法来执行此操作。 叹息
答案 0 :(得分:0)
将这些行添加到脚本的末尾并进行检查。
var_dump($itemRSS);
var_dump($arrFeeds);
var_dump($doc);
问题是知道您没有正确显示信息。
答案 1 :(得分:0)
除了尝试回显一个对象和一个数组之外,脚本没有问题,print_r $ arrFeeds你可以看到所有内容
答案 2 :(得分:0)
正如其他答案中所提到的,你做了一些错误的事情,例如尝试回显数组和对象。出于某种原因,你也没有在$ arrFeeds中获得任何结果,尽管你应该这样做。
更简单的方法是将Feed的render方法更改为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;
}