使用PHP显示json feed项的问题

时间:2015-06-21 01:07:31

标签: php json

我是json与php结合的新手,并想知道为什么下面的代码不起作用。我的任务是逐一显示标题项目。

<?php
$json_string =    file_get_contents("https://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48");
$parsed_json = json_decode($json_string, true);
$parsed_json = $parsed_json['gigs'];

foreach($parsed_json as $key => $value)
{
   echo $value['title'] . '<br>';
}
?>

接下来的问题是,我如何能够将名为cloud_img_med的图像项目保存到我的服务器中/抓取

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

回答有关此代码无效的原因的问题:

我试图自己设置它,并发现file_get_contents提取的输出被压缩了。您可以通过在简单的var_dump中读取输出来看到:

var_dump($json_string);

要解决此问题,您需要使用不带压缩的自定义上下文:

$context = stream_context_create(
    array(
        'http' => array(
            'method' => "GET",
            'header' => "Accept-Encoding: gzip;q=0, compress;q=0\r\n",
        )
));

然后将其作为第三个参数传递:

$json_string = file_get_contents("https://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48", false, $context);

我应该这样做JSON字符串可读

答案 1 :(得分:0)

代码似乎工作正常 - 我在我的本地机器上尝试过。

运行此

replace the MGM lion with your pet or whoever<br>design creative Animal And Pet Company logo<br>`

给我这个输出

file_get_contents

你想要的是什么?如果您遇到问题,您的服务器上可能不允许var now = new Date(); now.setDate(now.getDate() + 30); document.cookie='bla=cats; expires=' + now + ';path=/;' ,您无法获得JSON。尝试像我一样将它硬编码到$ str变量中,看看你是否得到了你想要的东西。

关于保存图片,您可以在此处查看此答案:https://stackoverflow.com/a/724449/4396258

答案 2 :(得分:0)

我认为问题可能是你从Fiverr的JSON API获得的数据。至少在我的测试中,我发现它使用gzip编码来压缩您请求的数据。所以你必须解压缩它。

$json_string = file_get_contents("https://www.fiverr.com/gigs/gigs_as_json?host=search&type=single_query&query_string=pet&search_filter=rating&category_id=3&sub_category_id=49&limit=48");
$content = json_decode(gzinflate( substr($json_string,10,-8) ));
$gigs = $content->gigs;
foreach($gigs as $key => $value)
{
   echo $value->title . '<br>';
}