Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengzip Direktori secara Rekursif dalam PHP?
Cara [Rekursif] Zip Direktori dalam PHP
Matlamatnya adalah untuk mengezip direktori dengan berkesan, termasuk semua subdirektori dan failnya, dalam PHP.
Pendekatan Menggunakan Zip PHP Kelas
Anda boleh menggunakan kelas Zip PHP untuk mencapai ini. Kod yang disediakan menawarkan pendekatan asas, tetapi ia hanya beroperasi dengan fail individu, bukan direktori.
Kod Kerja
Untuk menangani cabaran ini, pertimbangkan kod berikut:
function Zip($source, $destination) { if (!extension_loaded('zip') || !file_exists($source)) { return false; } $zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { return false; } $source = str_replace('\', '/', realpath($source)); if (is_dir($source) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = str_replace('\', '/', $file); // Ignore "." and ".." folders if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue; $file = realpath($file); if (is_dir($file) === true) { $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } else if (is_file($file) === true) { $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } else if (is_file($source) === true) { $zip->addFromString(basename($source), file_get_contents($source)); } return $zip->close(); }
Penggunaan:
Gunakan fungsi Zip seperti yang ditunjukkan di sini:
Zip('/folder/to/compress/', './compressed.zip');
Kod ini berulang secara berulang melalui direktori sumber yang ditentukan dan subdirektorinya, menambah fail dan direktori kosong pada arkib zip. Operasinya serasi dengan kedua-dua platform Windows dan Linux.
Atas ialah kandungan terperinci Bagaimana untuk Mengzip Direktori secara Rekursif dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!