ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してフォルダー全体を圧縮し、必要に応じてその内容を削除する方法

PHP を使用してフォルダー全体を圧縮し、必要に応じてその内容を削除する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 10:22:11689ブラウズ

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

PHP を使用したフォルダー全体の ZIP 化

質問:

を使用してフォルダー全体の 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.フォルダー全体を圧縮 「重要.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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。