教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php中gzip对文件或字符串解压缩的例子

php中gzip对文件或字符串解压缩的例子

发布时间:2016-04-21   编辑:jiaochengji.com
本文介绍下,在php中对gzip压缩后的文件或字符串,进行解压缩的例子,有需要的朋友参考下吧。

本以为,对于使用gzip压缩后传输的网页,本来应该只要发送一个http头 Accept-Encoding: identity或干脆不发送这个头等,即可使目标站返回未经gzip压缩的页面。
实际情况却是:目标站无视客户端的请求,仍然返回gzip数据,造成乱码。

因此,就需要考虑对gzip后的php文件进行解压了,用内置的gzdecode函数即可。

配置了半天也无法支持gzdecode函数,只好用如下的变通方式,实现了想要的功能:
 

复制代码 代码示例:
<?php
/**
* php自定义gzdecode解压缩gzip文件
* edit www.jbxue.com
*/
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
$f=@file_get_contents(http://www.jbxue.com);
echo gzdecode($f);
?>

您可能感兴趣的文章:
PHP开启gzip压缩的二种方法
asp.net中如何用GZip压缩和解压
php中gzip对文件或字符串解压缩的例子
php 字符串压缩方法对比分析
IIS开启Gzip压缩失败的原因与解决办法
PHP开启Gzip页面没有输出的解决方法
生产环境中遇到的IIS启用GZip的问题
教你如何配置Apache的Gzip模块
读写接口
php压缩函数(gzcompress gzuncompress)压缩字符串

[关闭]
~ ~