教你在PHP ZipArchive解压缩时,去掉zip包里的多余目录层级
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了教你在PHP ZipArchive解压缩时,去掉zip包里的多余目录层级,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1599字,纯文字阅读大概需要3分钟。
内容图文
推荐:《PHP视频教程》
写了个脚本,下载discuzQ,并解压到指定 git 仓储下,方便更新代码。
遇到一个问题,在解压 uniapp 这个zip包时,里面多了一层目录包装,如果直接解压到指定目录,也会造成多了一级目录,如下图:
那如何从zip包里解压,并去掉多余一层的目录 uniapp_v2.xxxx
,可以看下面的 copy("zip://{$zipFile}#{$filename}", $newFileName);
<?php set_time_limit(0); $config = (object)[ 'zips' => __DIR__ . '/zips', 'uniapp' => __DIR__ . '/uniapp', ]; downloadAndExtract('https://dl.discuz.chat/uniapp_latest.zip', 'uniapp'); function downloadAndExtract($zipUrl, $key) { global $config; echo "正在下载: $zipUrl\n"; $zipData = file_get_contents($zipUrl); $zipFile = $config->zips . "/$key-" . date('Ymd-His') . '.zip'; file_put_contents($zipFile, $zipData); echo "正在解压到 {$config->$key} \n"; $zip = new ZipArchive; if ($key === 'uniapp') { if ($zip->open($zipFile) === true) { $folder = $zip->getNameIndex(0); for ($i = 1; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); if (substr($filename, -1, 1) === '/') { continue; } // $folder like => uniapp_v2.1.201029/ // $filename like => uniapp_v2.1.201029/commitlint.config.js $newFileName = $config->$key . '/' . str_replace($folder, '', $filename); if (!file_exists(dirname($newFileName))) { mkdir(dirname($newFileName), 0644, true); } copy("zip://{$zipFile}#{$filename}", $newFileName); } $zip->close(); } } echo "-------------- SUCESS --------------\n"; }
以上就是教你在PHP ZipArchive解压缩时,去掉zip包里的多余目录层级的详细内容。
本文系统来源:https://www.php.cn/php-weizijiaocheng-462541.html内容总结
以上是互联网集市为您收集整理的教你在PHP ZipArchive解压缩时,去掉zip包里的多余目录层级全部内容,希望文章能够帮你解决教你在PHP ZipArchive解压缩时,去掉zip包里的多余目录层级所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。