Ho provato una cosa del genere ma non va... uff ci sto perdendo la testa con sta compressione XD
Codice PHP:
if (!function_exists('el_zip_gzDecode')) {
function el_zip_gzDecode ($data, &$filename = null, &$comment = null) {
$gzMagic = sprintf("%X%X",ord(substr($data, 1, 1)),ord(substr($data, 0, 1)));
if($gzMagic != "8B1F"){
$unpacked = @gzinflate($data);
return $unpacked;
}
$flags = ord(substr($data, 3, 1));
$headerlen = 10;
if ($flags & 4) {
$extralen = unpack('v' ,substr($data, 10, 2));
$extralen = $extralen[1];
$headerlen += 2 + $extralen;
}
if ($flags & 8){ // Filename
$new_headerlen = strpos($data, chr(0), $headerlen) + 1;
$gzfname = substr($data, $headerlen, $new_headerlen - $headerlen - 1);
$headerlen = $new_headerlen;
if(isset($filename)) $filename = $gzfname;
}
if ($flags & 16){ // Comment
$new_headerlen = strpos($data, chr(0), $headerlen) + 1;
$gzcomment = substr($data, $headerlen, $new_headerlen - $headerlen - 1);
$headerlen = $new_headerlen;
if(isset($comment)) $comment = $gzcomment;
}
if ($flags & 2) // CRC at end of header
$headerlen += 2;
$old_size = strlen($data);
$new_size = $old_size - $headerlen - 8;
$packed = substr($data, $headerlen, $new_size);
$unpacked = gzinflate($packed);
return $unpacked;
}
}
while (!feof ($socket)) {
$part .= fgets ($socket);
}
$a = el_zip_gzDecode($part);
echo $a;