PHPZipArchive解压缩时如何去掉zip包里的多余目录层级-创新互联
这篇文章主要介绍PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联是专业的玄武网站建设公司,玄武接单;提供网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行玄武网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
写了个脚本,下载discuzQ,并解压到指定 git 仓储下,方便更新代码。
遇到一个问题,在解压 uniapp 这个zip包时,里面多了一层目录包装,如果直接解压到指定目录,也会造成多了一级目录,如下图:
那如何从zip包里解压,并去掉多余一层的目录uniapp_v2.xxxx
,可以看下面的copy("zip://{$zipFile}#{$filename}", $newFileName);
__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包里的多余目录层级的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
当前标题:PHPZipArchive解压缩时如何去掉zip包里的多余目录层级-创新互联
转载来于:http://scgulin.cn/article/hhpcj.html