php对gzip文件或者字符串解压实例参考

要采集一个网站,目标站采用了gzip压缩传输网页,本来应该只要发送一个http头 Accept-Encoding: identity或者干脆不发送这个头等,就可以使目标站返回没有经过gzip压缩的页面了,不过很不幸,目标站无视客户端的请求,仍然返回gzip数据,造成乱码。
其实php对gzip解压很简单,用内置的gzdecode函数就可以了,不过很可惜我配置了半天也无法支持gzdecode函数,所以只好变通一下:
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; 
} 
}

调用方法很简单:
以下为引用的内容:
$f=@file_get_contents("http://www.56191.com"); 
echo gzdecode($f);