2011-05-24 56 views
1

我是新来json解码与php。这是我的情况。我需要获取一个非常简单的json调用,并在我的HTML页面上解析它。下面是JSON的内容:解码JSON和PHP。适用于变量,而不是URL

[{"id":"793","date":"Apr. 18, 2011","title":"the cat in the hat","url":"http:\/\/www.somesite.com\/community\/blogs\/id-793"},{"id":"788","date":"Apr. 12, 2011","title":"the fox has sox","url":"http:\/\/www.somesite.com\/community\/blogs\/id-788"}] 

等等

当我继续前进,把在一个串在我的PHP文件:

$json = [{...}] 
$arr = json_decode($json,true); 
foreach($arr as $item) { 
    echo "title: ". $item['title'] ."<br>"; 
} 

我拿到冠军打印出来没有问题。相反,如果我把:

$arr = json_decode("url_path_here",true); 
foreach($arr as $item) { 
    echo "title: ". $item['title'] ."<br>"; 
} 

我得到一个错误,“为的foreach提供了无效的参数()”和数组简直是空的。

在开发过程中,Feed在不同的服务器上,如果这很重要的话。我只是不确定我在这里做错了什么。我正在使用PHP 5.

谢谢!

回答

8

json_decode需要一个字符串,而不是一个URL。

这可能会工作:

$arr = json_decode(file_get_contents("url_path_here"),true); 
foreach($arr as $item) { 
    echo "title: ". $item['title'] ."<br>"; 
} 
+0

哇。这是快速和正确的:) – panzhuli 2011-05-24 19:26:44

+3

只需注意:有时PHP不会被设置为允许URL在文件功能。如果是这种情况,你可能需要使用curl来代替。 – Cfreak 2011-05-24 19:28:58

+0

感谢你的头。如果它在目标服务器上不起作用,我会先检查它。 – panzhuli 2011-05-24 19:30:28

3

json_decode()采取JSON解码。如果您想从远程服务器解码JSON,那么在将其提供给函数之前,您需要先将其拉下。

+0

谢谢!这解释了它。 ceejayoz的解决方案完美运作 – panzhuli 2011-05-24 19:27:09