Zlib 函数
在线手册:中文 英文
PHP手册

gzinflate

(PHP 4 >= 4.0.4, PHP 5)

gzinflateInflate a deflated string

说明

string gzinflate ( string $data [, int $length = 0 ] )

This function inflate a deflated string.

参数

data

The data compressed by gzdeflate().

length

The maximum length of data to decode.

返回值

The original uncompressed data or FALSE on error.

The function will return an error if the uncompressed data is more than 32768 times the length of the compressed input data or more than the optional parameter length.

范例

Example #1 gzinflate() example

<?php
$compressed   
gzdeflate('Compress me'9);
$uncompressed gzinflate($compressed);
echo 
$uncompressed;
?>

参见


Zlib 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: Inflate a deflated string

用户评论:

Steven Lustig (05-Nov-2010 05:44)

You can use this to uncompress a string from Linux command line gzip by stripping the first 10 bytes:

<?php
$inflatedOutput
= gzinflate(substr($output, 10, -8));
?>

vitall at ua dot fm (10-Sep-2009 01:10)

The correct function for gzip and chunked data particularly when you get "Content-Encoding: gzip" and "Transfer-Encoding: chunked" headers:

<?php
function decode_gzip($h,$d,$rn="\r\n"){
if (isset(
$h['Transfer-Encoding'])){
 
$lrn = strlen($rn);
 
$str = '';
 
$ofs=0;
 do{
   
$p = strpos($d,$rn,$ofs);
   
$len = hexdec(substr($d,$ofs,$p-$ofs));
   
$str .= substr($d,$p+$lrn,$len);
    
$ofs = $p+$lrn*2+$len;
 }while (
$d[$ofs]!=='0');
 
$d=$str;
}
if (isset(
$h['Content-Encoding'])) $d = gzinflate(substr($d,10));
return
$d;
}
?>

Enjoy!

John (13-Jun-2008 06:22)

And when retrieving mod_deflate gzip'ed content and using gzinflate() to decode the data, be sure to strip the first 11 chars from the retrieved content.

<?php $dec = gzinflate(substr($enc,11)); ?>

patatraboum at free dot fr (24-Aug-2007 06:57)

Some gz string strip header and return inflated
It actualy processes some first member of the gz
See rfc1952 at http://www.faqs.org/rfcs/rfc1952.html for more details and improvment as gzdecode

<?php
function gzBody($gzData){
    if(
substr($gzData,0,3)=="\x1f\x8b\x08"){
       
$i=10;
       
$flg=ord(substr($gzData,3,1));
        if(
$flg>0){
            if(
$flg&4){
                list(
$xlen)=unpack('v',substr($gzData,$i,2));
               
$i=$i+2+$xlen;
            }
            if(
$flg&8) $i=strpos($gzData,"\0",$i)+1;
            if(
$flg&16) $i=strpos($gzData,"\0",$i)+1;
            if(
$flg&2) $i=$i+2;
        }
        return
gzinflate(substr($gzData,$i,-8));
    }
    else return
false;
}
?>

spikeles_ at hotmail dot com (02-Nov-2006 04:12)

This can be used to inflate streams compressed by the Java class java.util.zip.Deflater but you must strip the first 2 bytes off it. ( much like the above comment )

<?php $result = gzinflate(substr($compressedData, 2)); ?>

boris at gamate dot com (08-Jul-2003 01:49)

When retrieving mod_gzip'ed content and using gzinflate() to decode the data, be sure to strip the first 10 chars from the retrieved content.

<?php $dec = gzinflate(substr($enc,10)); ?>