php 解码GZIP,编码-解码通过cURL在PHP中检索到的gzip压缩网页

通用的GUNZIP功能:

function gunzip($zipped) {

$offset = 0;

if (substr($zipped,0,2) == "\x1f\x8b")

$offset = 2;

if (substr($zipped,$offset,1) == "\x08") {

# file_put_contents("tmp.gz", substr($zipped, $offset - 2));

return gzinflate(substr($zipped, $offset + 8));

}

return "Unknown Format";

}

将函数与CURL集成的示例:

$headers_enabled = 1;

curl_setopt($c, CURLOPT_HEADER, $headers_enabled)

$ret = curl_exec($c);

if ($headers_enabled) {

# file_put_contents("preungzip.html", $ret);

$sections = explode("\x0d\x0a\x0d\x0a", $ret, 2);

while (!strncmp($sections[1], 'HTTP/', 5)) {

$sections = explode("\x0d\x0a\x0d\x0a", $sections[1], 2);

}

$headers = $sections[0];

$data = $sections[1];

if (preg_match('/^Content-Encoding: gzip/mi', $headers)) {

printf("gzip header found\n");

return gunzip($data);

}

}

return $ret;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值