百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> 教你在PHP ZipArchive解紧缩时,去除zip包里的余外名目层级
分享文章到:

教你在PHP ZipArchive解紧缩时,去除zip包里的余外名目层级

发布时间:12/01 来源:未知 浏览: 关键词:

引荐:《PHP视频教程》

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

碰到一个问题,在解压 uniapp 这个zip包时,里面多了一层名目包装,假如直接解压到指定名目,也会造成多了1级名目,如下图:

Laravel

那怎样从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包里的余外名目层级的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有154人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板