在做数据采集的时候,有时候会遇到采集到的数据是gzip压缩后的数据,看到的结果就是一堆乱码。这时候就需要做下解压操作了,在php中通过函数gzdecode去解压。启用这个函数需要php加载zlib模块,否则会有下面的错误.

Call to undefined function gzdecode()

如果不想加载zlib模块的话,就自己实现下这个函数,也非常简单。

if (!function_exists('gzdecode')) {
  function gzdecode ($data) {
    $flags = ord(substr($data, 3, 1));
    $headerlen = 10;
    $extralen = 0;
    $filenamelen = 0;
    if ($flags & 4) {
        $extralen = unpack('v' ,substr($data, 10, 2));
        $extralen = $extralen[1];
        $headerlen += 2 + $extralen;
    }
    if ($flags & 8) // Filename
        $headerlen = strpos($data, chr(0), $headerlen) + 1;
    if ($flags & 16) // Comment
        $headerlen = strpos($data, chr(0), $headerlen) + 1;
    if ($flags & 2) // CRC at end of file
        $headerlen += 2;
    $unpacked = @gzinflate(substr($data, $headerlen));
    if ($unpacked === FALSE)
        $unpacked = $data;
    return $unpacked;
  }
}

转载请注明:知识蚂蚁 » php中如何解压gzip数据

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消