function infos($src, $data = false) { $ext = '.' . pathinfo($src, PATHINFO_EXTENSION); foreach ($this->WathArchive as $key => $val) { if (stripos($ext, $key) !== false) { $comp = $val; } } if ($comp == 'zip') { $zip = new zip(); $zipresult = $zip->infosZip($src, $data); $result['Items'] = count($zipresult); foreach ($zipresult as $key => $val) { $result['UnCompSize'] += $zipresult[$key]['UnCompSize']; } $result['Size'] = filesize($src); $result['Ratio'] = $result['UnCompSize'] ? round(100 - $result['Size'] / $result['UnCompSize'] * 100, 1) : false; } elseif (strlen($comp) > 1) { $tar = new tar(); if ($comp == 'bz') { $bzip2 = new bzip2(); $result = $bzip2->infosBzip2($src, true); $src = $result['Data']; } elseif ($comp == 'gz') { $gzip = new gzip(); $result = $gzip->infosGzip($src, true); $src = $result['Data']; } if ($tar->is_tar($src) || is_file($src)) { $tarresult = $tar->infosTar($src, false); $result['Items'] = count($tarresult); $result['UnCompSize'] = 0; if (empty($result['Size'])) { $result['Size'] = is_file($src) ? filesize($src) : strlen($src); } foreach ($tarresult as $key => $val) { $result['UnCompSize'] += $tarresult[$key]['size']; } $result['Ratio'] = $result['UnCompSize'] ? round(100 - $result['Size'] / $result['UnCompSize'] * 100, 1) : false; } if (!$data) { unset($result['Data']); } } else { return false; } return array('Items' => $result['Items'], 'UnCompSize' => $result['UnCompSize'], 'Size' => $result['Size'], 'Ratio' => $result['Ratio']); }