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));
?>
gzinflate
(PHP 4 >= 4.0.4, PHP 5)
gzinflate — Inflate a deflated string
Opis
string gzinflate
( string
$data
[, int $length = 0
] )This function inflate a deflated string.
Zwracane wartości
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.
Przykłady
Przykład #1 gzinflate() example
<?php
$compressed = gzdeflate('Compress me', 9);
$uncompressed = gzinflate($compressed);
echo $uncompressed;
?>
Zobacz też:
- gzdeflate() - Deflate a string
- gzcompress() - Compress a string
- gzuncompress() - Uncompress a compressed string
- gzencode() - Create a gzip compressed string
Steven Lustig
05-Nov-2010 11:44
vitall at ua dot fm
09-Sep-2009 08: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 01: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 01: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
01-Nov-2006 10: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 08: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)); ?>
