Exemples

Exemple #1 Création d'une archive Zip

<?php

$zip 
= new ZipArchive();
$filename "./test112.zip";

if (
$zip->open($filenameZipArchive::CREATE)!==TRUE) {
    exit(
"Impossible d'ouvrir le fichier <$filename>\n");
}

$zip->addFromString("testfilephp.txt" time(), "#1 Ceci est une chaîne texte, ajoutée comme testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" time(), "#2 Ceci est une chaîne texte, ajoutée comme testfilephp2.txt.\n");
$zip->addFile($thisdir "/too.php","/testfromfile.php");
echo 
"Nombre de fichiers : " $zip->numFiles "\n";
echo 
"Statut :" $zip->status "\n";
$zip->close();
?>

Exemple #2 Affiche les détails de l'archive et liste son contenu

<?php
$za 
= new ZipArchive();

$za->open('test_with_comment.zip');
print_r($za);
var_dump($za);
echo 
"Nombre de fichiers : " $za->numFiles "\n";
echo 
"Statut : " $za->status  "\n";
echo 
"Statut du système : " $za->statusSys "\n";
echo 
"Nom du fichier : " $za->filename "\n";
echo 
"Commentaire : " $za->comment "\n";

for (
$i=0$i<$za->numFiles;$i++) {
    echo 
"index : $i\n";
    
print_r($za->statIndex($i));
}
echo 
"Nombre de fichiers :" $za->numFiles "\n";
?>

Exemple #3 Flux ZIP : lit les meta-données d'un fichier OpenOffice

<?php
$reader 
= new XMLReader();

$reader->open('zip://' dirname(__FILE__) . '/test.odt#meta.xml');
$odt_meta = array();
while (
$reader->read()) {
    if (
$reader->nodeType == XMLREADER::ELEMENT) {
        
$elm $reader->name;
    } else {
        if (
$reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {
            break;
        }
        if (!
trim($reader->value)) {
            continue;
        }
        
$odt_meta[$elm] = $reader->value;
    }
}
print_r($odt_meta);
?>

Cet exemple utilise l'ancienne API (PHP 4) ; il ouvre une archive ZIP, lit chaque fichier de l'archive et affiche son contenu. L'archive test2.zip utilisée dans cet exemple est une des archives de test, se trouvant dans les sources de ZZIPlib.

Exemple #4 Exemple d'utilisation de Zip

<?php

$zip 
zip_open("/tmp/test2.zip");

if (
$zip) {
    while (
$zip_entry zip_read($zip)) {
        echo 
"Nom :                        " zip_entry_name($zip_entry) . "\n";
        echo 
"Taille actuelle du fichier : " zip_entry_filesize($zip_entry) . "\n";
        echo 
"Taille compressée :          " zip_entry_compressedsize($zip_entry) . "\n";
        echo 
"Méthode de compression :     " zip_entry_compressionmethod($zip_entry) . "\n";

        if (
zip_entry_open($zip$zip_entry"r")) {
            echo 
"Contenu du fichier :\n";
            
$buf zip_entry_read($zip_entryzip_entry_filesize($zip_entry));
            echo 
"$buf\n";

            
zip_entry_close($zip_entry);
        }
        echo 
"\n";

    }

    
zip_close($zip);

}
?>