从压缩文件中获取内容

Get contents from gzipped file

我正在尝试从使用 Mailchimp API 执行批量操作请求后返回给我的 gzip 文件中获取内容。我希望只得到一个 JSON 字符串作为响应,但也会收到一堆数字和随机 (?) 字符串。

我就是这样做的。

$gz = gzopen($response->response_body_url, "r");
$contents = trim(gzread($gz, 10000));
print_r($contents); //see output below
gzclose($gz);

这是返回给我的。

0000777000000000000000000000000012705141572007721 5ustar rootroot./05fa27ceab.json0000666000000000000000000000121212705141572012327 0ustar rootroot[{"status_code":400,"operation_id":null,"response":"{\"type\":\"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/\",\"title\":\"Member Exists\",\"status\":400,\"detail\":\"xxxx.xxxx@xxxx.xx is already a list member. Use PUT to insert or update list members.\",\"instance\":\"\"}"},{"status_code":400,"operation_id":null,"response":"{\"type\":\"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/\",\"title\":\"Member Exists\",\"status\":400,\"detail\":\"xxxx2.xxxx2@xxxx2.xx is already a list member. Use PUT to insert or update list members.\",\"instance\":\"\"}"}]

我在这里错过了什么?为什么它不起作用?

看起来您可能正在处理 .tar.gz 文件,而不仅仅是 gzip。最简单的方法是使用 PharData 扩展名或将其保存到磁盘并使用 shell 工具解压缩。

Here's an answer to a question on how to deal with .tar.gz files in php