PHP dispone di una classe specifica per l'estrazione dei file da un file compresso in formato ZIP.
La classe ZipArchive estrae tutti i file presenti in un archivio ZIP in una directory specifica. La seguente funzione crea la directory di destinazione se questa non esiste, estrae i file in quella directory ed infine rimuove il file ZIP.
define('ABSPATH', $_SERVER['DOCUMENT_ROOT'] . '/');
function my_extract_files($filename = 'archive.zip', $dest_dir = 'archive') {
$file_path = ABSPATH . $filename;
$dest_dir_path = ABSPATH . $dest_dir;
if(!file_exists($file_path)) {
return false;
}
if(!class_exists( 'ZipArchive')) {
return false;
}
$zip = new ZipArchive;
if ($zip->open($file_path) === false) {
return false;
}
if(!file_exists($dest_dir_path)) {
mkdir($dest_dir_path, 0755);
}
if(!is_dir($dest_dir_path)) {
return false;
}
$zip->extractTo($dest_dir_path);
$zip->close();
unlink($file_path);
return true;
}