PHP ZipArchive의 압축을 풀 때 zip 패키지에서 중복된 디렉터리 수준을 제거하는 방법을 배웁니다.

藏色散人
풀어 주다: 2023-04-09 16:12:02
앞으로
6513명이 탐색했습니다.
"

스크립트를 작성하고 discuzq를 다운로드한 후 지정된 Git 저장소에 압축을 풀어 코드 업데이트를 용이하게 했습니다.

uniapp zip 패키지의 압축을 풀 때 디렉터리 패키징의 추가 계층이 있습니다. 지정된 디렉터리에 직접 압축을 풀면 아래와 같이 디렉터리 수준이 추가됩니다.

zip 패키지의 압축을 풀고 추가 디렉터리 레이어를 제거하는 방법PHP ZipArchive의 압축을 풀 때 zip 패키지에서 중복된 디렉터리 수준을 제거하는 방법을 배웁니다.

<?php

set_time_limit(0);
$config = (object)[
    &#39;zips&#39;    => __DIR__ . &#39;/zips&#39;,
    &#39;uniapp&#39;  => __DIR__ . &#39;/uniapp&#39;,
];

downloadAndExtract(&#39;https://dl.discuz.chat/uniapp_latest.zip&#39;, &#39;uniapp&#39;);

function downloadAndExtract($zipUrl, $key)
{
    global $config;

    echo "正在下载: $zipUrl\n";
    $zipData = file_get_contents($zipUrl);
    $zipFile = $config->zips . "/$key-" . date(&#39;Ymd-His&#39;) . &#39;.zip&#39;;
    file_put_contents($zipFile, $zipData);

    echo "正在解压到 {$config->$key} \n";
    $zip = new ZipArchive;

    if ($key === &#39;uniapp&#39;) {
        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) === &#39;/&#39;) {
                    continue;
                }

                // $folder like => uniapp_v2.1.201029/
                // $filename like => uniapp_v2.1.201029/commitlint.config.js
                $newFileName = $config->$key . &#39;/&#39; . str_replace($folder, &#39;&#39;, $filename);
                if (!file_exists(dirname($newFileName))) {
                    mkdir(dirname($newFileName), 0644, true);
                }
                copy("zip://{$zipFile}#{$filename}", $newFileName);
            }
            $zip->close();
        }
    } 

    echo "-------------- SUCESS --------------\n";
}
로그인 후 복사

위 내용은 PHP ZipArchive의 압축을 풀 때 zip 패키지에서 중복된 디렉터리 수준을 제거하는 방법을 배웁니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!