// 压缩单个文件
function zip_file($filename) {
if(!is_file($filename)) {
return false;
}
$zip = new ZipArchive();
$zipName = basename($filename).'.zip';
// 打开指定压缩包,不存在则创建,存在则覆盖
if($zip->open($zipName, ZipArchive::CREATE|ZipArchive::OVERWRITE)) {
// 将文件添加到压缩包中
if($zip->addFile($filename)) {
$zip->close();
// unlink 删除文件
//@unlink($filename);
return true;
} else {
return false;
}
} else {
return false;
}
}
// 压缩多个文件
function zip_files($zipName, &$files) {
// 检测压缩包名称是否正确
$zipExt = strtolower(pathinfo($zipName, PATHINFO_EXTENSION));
if('zip' !== $zipExt) {
return false;
}
$zip = new ZipArchive();
if ($zip->open($zipName, ZipArchive::CREATE|ZipArchive::OVERWRITE)) {
foreach ($files as $file) {
if(is_file($file)) {
$zip->addFile($file);
}
}
$zip->close();
return true;
} else {
return false;
}
}
// 解压缩
function unzip_file($zipName, $dest) {
//检测要解压压缩包是否存在
if (!is_file($zipName)) {
return false;
}
//检测目标路径是否存在
if (!is_dir($dest)) {
mkdir($dest, 0777, true);
}
$zip = new ZipArchive();
if ($zip->open($zipName)) {
$zip->extractTo($dest);
$zip->close();
return true;
} else {
return false;
}
}
// 压缩单个文件
zip_file("1.php");
// 压缩多个文件
$files = array("1.php", "2.php");
foreach ($files as $file) {
echo $file . "
";
}
zip_files("1.zip", $files);
// 解压缩
unzip_file("2.zip", ".");
?>