php zip 文件解压
function unZip($zipFile, $unZipDir)
{
$zip = new \ZipArchive;
if ($zip->open($zipFile) === TRUE) {
is_dir_mkdir($unZipDir);
$docNum = $zip->numFiles;
for ($i = 0; $i < $docNum; $i++) {
$statInfo = $zip->statIndex($i, \ZipArchive::FL_ENC_RAW);
$filename = transcoding($statInfo['name']);
if ($statInfo['crc'] == 0) {
$newFileDir = $unZipDir . DIRECTORY_SEPARATOR . substr($filename, 0, -1);
is_dir_mkdir($newFileDir);
} else {
$source = 'zip://' . $zipFile . '#' . $zip->getNameIndex($i);
$dest = $unZipDir . DIRECTORY_SEPARATOR . $filename;
copy($source, $dest);
}
}
$zip->close();
return true;
} else {
return false;
}
}
function is_dir_mkdir($filePath)
{
if (!is_dir($filePath)) {
mkdir($filePath, 0755, true);
}
}
function transcoding($codeWords)
{
if (version_compare(PHP_VERSION, '7.1') === -1) {
$encoding = mb_detect_encoding($codeWords, ['ASCII', 'UTF-8', 'GBK', 'GB2312', 'BIG5', 'CP936']);
if (DIRECTORY_SEPARATOR == '/') {
$codeWords = iconv($encoding, 'UTF-8', $codeWords);
} else {
$codeWords = iconv($encoding, 'GBK//ignore', $codeWords);
}
} else {
if (DIRECTORY_SEPARATOR == '/') {
$codeWords = $codeWords;
} else {
$codeWords = $codeWords;
}
}
return $codeWords;
}