> 백엔드 개발 > PHP 튜토리얼 > PHP를 사용하여 전체 폴더를 압축하고 선택적으로 해당 내용을 삭제하는 방법은 무엇입니까?

PHP를 사용하여 전체 폴더를 압축하고 선택적으로 해당 내용을 삭제하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-27 10:22:11
원래의
693명이 탐색했습니다.

How to Zip a Complete Folder and Optionally Delete Its Contents Using PHP?

PHP로 전체 폴더 압축

질문:

다음을 사용하여 전체 폴더의 ZIP 아카이브를 어떻게 만들 수 있나요? PHP? 그리고 압축을 푼 후 특정 파일만 제외하고 폴더 내용을 모두 삭제하려면 어떻게 해야 하나요?

답변:

1. 전체 폴더 압축:

$rootPath = rtrim($rootPath, '\/');
$rootPath = realpath('folder-to-zip');

$zip = new ZipArchive();
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $file) {
    if (!$file->isDir()) {
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        $zip->addFile($filePath, $relativePath);
    }
}

$zip->close();
로그인 후 복사

2. 전체 폴더 압축 "important.txt"를 제외한 모든 파일 삭제:

$rootPath = rtrim($rootPath, '\/');
$rootPath = realpath('folder-to-zip');

$zip = new ZipArchive();
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);

$filesToDelete = array();

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $file) {
    if (!$file->isDir()) {
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        $zip->addFile($filePath, $relativePath);

        if ($file->getFilename() != 'important.txt') {
            $filesToDelete[] = $filePath;
        }
    }
}

$zip->close();

foreach ($filesToDelete as $file) {
    unlink($file);
}
로그인 후 복사

위 내용은 PHP를 사용하여 전체 폴더를 압축하고 선택적으로 해당 내용을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿