<?php
class Unzip
{
public function __construct()
{
header("content-type:text/html;charset=utf8");
}
public function unzip($src_file, $dest_dir = false, $create_zip_name_dir = true, $overwrite = true)
{
$file_name_arr = array();
$zip = zip_open($src_file);
if (is_resource($zip)) {
$splitter = ($create_zip_name_dir === true) ? "." : "/";
if ($dest_dir === false) {
$dest_dir = substr($src_file, 0, strrpos($src_file, $splitter)) . "/";
}
$this->create_dirs($dest_dir);
while ($zip_entry = zip_read($zip)) {
$pos_last_slash = strrpos(zip_entry_name($zip_entry), "/");
if ($pos_last_slash !== false) {
$this->create_dirs($dest_dir . substr(zip_entry_name($zip_entry), 0, $pos_last_slash + 1));
}
if (zip_entry_open($zip, $zip_entry, "r")) {
$file_name = $dest_dir . zip_entry_name($zip_entry);
if ($overwrite === true || $overwrite === false && !is_file($file_name)) {
$fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
@file_put_contents($file_name, $fstream);
chmod($file_name, 0777);
$file_name_arr[] = $file_name;
}
zip_entry_close($zip_entry);
}
}
zip_close($zip);
}
return $file_name_arr;
}
public function create_dirs($path)
{
if (!is_dir($path)) {
$directory_path = "";
$directories = explode("/", $path);
array_pop($directories);
foreach ($directories as $directory) {
$directory_path .= $directory . "/";
if (!is_dir($directory_path)) {
mkdir($directory_path);
chmod($directory_path, 0777);
}
}
}
}
}
<?php
require_once "./unzip.php";
$dest_dir = "D:\\reloadD\\www\\php\\study\\unzip\\";
$dst_zip = $dest_dir . "pdfbox_examples-master.zip";
$z = new Unzip();
$z->create_dirs($dest_dir);
$file_name = $z->unzip($dst_zip, $dest_dir, true, false);
echo "<pre>";
var_dump($file_name);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?