PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级

  

这篇文章主要介绍PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

  ,,,,,,,,,,,,,,   ,,,,,,,,,,,,,,

写了个脚本,下载discuzQ,并解压到指定git仓储下,方便更新代码。

遇到一个问题,在解压uniapp这个压缩包时,里面多了一层目录包装,如果直接解压到指定目录,也会造成多了一级目录,如下图:

 PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级

那如何从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包里的多余目录层级的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

PHP ZipArchive解压缩时如何去掉zip包里的多余目录层级