这篇文章主要介绍PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
写了个脚本,下载discuzQ,并解压到指定git仓储下,方便更新代码。
遇到一个问题,在解压uniapp这个压缩包时,里面多了一层目录包装,如果直接解压到指定目录,也会造成多了一级目录,如下图:
那如何从zip包里解压,并去掉多余一层的目录<代码> uniapp_v2。xxxx> 代码,可以看下面的<代码>复制(“邮政编码://{$ zipFile} # {$ filename}“, newFileName美元);代码>
& lt; php ? set_time_limit (0); $ config=(对象) & # 39;拉链# 39;=比;__DIR__。& # 39;/拉链# 39; & # 39;uniapp& # 39;=比;__DIR__。& # 39;/uniapp& # 39; ]; downloadAndExtract (& # 39; https://dl.discuz.chat/uniapp_latest.zip& # 39; & # 39; uniapp& # 39;); 函数downloadAndExtract (zipUrl美元,美元键) { 全球美元配置; 回声“正在下载:$ zipUrl \ n"; (zipData=https://www.yisu.com/zixun/file_get_contents美元zipUrl); zipFile=美元配置->拉链。“/关键——“美元。日期(“Ymd-His”)。“zip”; 写入(zipFile, zipData美元); 回声”正在解压到{$ config -> $关键}/n”; $ zip=新ZipArchive; if($关键===uniapp) { 如果($ zip ->打开(zipFile美元)===true) { $=$ zip文件夹-> getNameIndex (0); (i=1美元;$ i <$ zip -> numFiles;$我+ +){ $=$ zip文件名-> getNameIndex ($ i); 如果(substr(文件名,美元1,1)==='/'){ 继续; }//文件夹=> uniapp_v2.1.201029/美元//文件名=> uniapp_v2.1.201029/commitlint.config.js美元 美元$ newFileName=$ config ->键。“/薄?文件夹,美元“大小写不敏感,$ filename); 如果(! file_exists(目录名(newFileName美元))){ mkdir(目录名(newFileName美元),0644年,真的); } 复制(邮政编码://{$ zipFile} # {$ filename}”, newFileName美元); } $ zip -> close (); } } 成功回声”- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/n”; }
以上是PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!