ホームページ >バックエンド開発 >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.フォルダー全体を圧縮 「重要.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 サイトの他の関連記事を参照してください。