PHP: estrarre i file da un archivio compresso in formato ZIP

PHP: estrarre i file da un archivio compresso in formato ZIP

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;
}

Torna su