downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ZipArchive> <Constantes pré-définies
[edit] Last updated: Fri, 25 May 2012

view this page in

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 <$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 metainformations 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);

}
?>


ZipArchive> <Constantes pré-définies
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes Exemples
Jonathan 19-Jan-2010 10:29
If you find your zip file not being created make sure every file you are adding to the zip is valid.  If even one file is not available when zip->close is called then the archive will fail and your zip file won't be created.
Stefano Di Paolo 04-Oct-2008 07:13
1) If you want to add files to a ZIP archive but you don't know if the ZiP file exists or not, you MUST check: this changes the way you open it !.
2) you can not append multiple flags, can use only one (or none).

If the zip does not exists, open it with:
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE)
(or a different compression method)

If the zip already exists, open it with:
$ziph->open($archiveFile)
or
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS)

Example: make backup files every hour and ZIP them all in a daily ZIP archive, so you want to get only one ZIP per day, each ZIP containing 24 files:
<?php
 
function archivebackup($archiveFile, $file, &$errMsg)
  {
   
$ziph = new ZipArchive();
    if(
file_exists($archiveFile))
    {
      if(
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
      {
       
$errMsg = "Unable to Open $archiveFile";
        return
1;
      }
    }
    else
    {
      if(
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE) !== TRUE)
      {
       
$errMsg = "Could not Create $archiveFile";
        return
1;
      }
    }
    if(!
$ziph->addFile($file))
    {
     
$errMsg = "error archiving $file in $archiveFile";
      return
2;
    }
   
$ziph->close();
   
    return
0;
  }
?>
info at peterhofer dot ch 13-Sep-2008 09:03
All these examples will not work if the php script has no write access within the folder.

Although you may say this is obvious, I found that in this case, $zip->open("name", ZIPARCHIVE::CREATE) doesn't return an error as it might not try to access the file system but rather allocates memory.

It is only $zip->close() that returns the error. This might cause you seeking at the wrong end.
geandjay at gmail dot com 17-Apr-2008 09:25
<?php
        $zip
= new ZipArchive;
   
$zip->open('teste.zip');
   
$zip->extractTo('./');
   
$zip->close();
        echo
"Ok!";
?>

 
show source | credits | sitemap | contact | advertising | mirror sites