我是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的图像项目保存到我的服务器中/抓取
非常感谢您的帮助。
答案 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>';
}