|
Table des matières
CLXXXIV. Fonctions ZIPIntroductionCe module vous permet de lire et d’écrire des archives compressées ZIP ainsi que les fichiers contenus dans ces archives. Pré-requisInterne à PHP 4La version initiale est fournie avec PHP 4 et est disponible dans PECL depuis la version 1.0, voir http://pecl.php.net/package/zip. Elle ne peut que lire les archives ZIP. Cette version utilisent les fonctions de la bibliothèque ZZIPlib de Guido Draheim. Vous devez avoir d’installer la bibliothèque ZZIPlib en version >= 0.10.6. PECL et PHP 5.2 ou suivantLa nouvelle version est fournie avec PHP 5.2.0 ou suivant et est disponible dans PECL depuis la version 1.1.0 ou suivant. Elle ne nécessite pas de bibliothèque externe. Elle peut lire et écrire des archives ZIP lorsqu’elle est utilisée avec PHP 5.1 ou suivant et elle ne peut que les lire lorsqu’elle est utilisée avec PHP 4. InstallationCette extension PECL n’est pas intégrée à PHP. Des informations sur l’installation de ces extensions PECL peuvent être trouvées dans le chapitre du manuel intitulé Installation des extensions PECL. D’autres informations comme les notes sur les nouvelles versions, les téléchargements, les sources des fichiers, les informations concernant les mainteneurs ainsi qu’un CHANGELOG, peuvent être trouvées ici : http://pecl.php.net/package/zip. Installation sous LinuxInstallation lorsque l'extension est fournie avec PHP 4Pour pouvoir utiliser ces fonctions, vous devez compiler PHP avec le support ZIP en utilisant l’option de configuration “–with-zip[=DIR]” où [DIR] est le préfixe de l’installation de la bibliothèque ZZIPlib. Installation avec PECL ou fournie avec PHP 5.2 et suivantPour pouvoir utiliser ces fonctions, vous devez compiler PHP avec le support ZIP en utilisant l’option de configuration “–enable-zip”. Ceci ne nécessite pas de bibliothèque externe.
Installation sous WindowsInstallation lorsque l'extension est fournie avec PHP 4Les utilisateurs de Windows doivent activer la bibliothèque “php_zip.dll” dans le “php.ini” pour pouvoir utiliser ces fonctions. En PHP 4, cette bibliothèque DLL se trouve dans le dossier “extensions/” avec les binaires PHP pour Windows téléchargées. Vous pouvez télécharger ces bibliothèques DLL pour ces extensions PECL depuis la page de téléchargement de PHP sous sur la page http://snaps.php.net/.
Installation avec PECL ou fournie avec PHP 5.2 et suivantLes utilisateurs de WIndows doivent activer la bibliothèque “php_zip.dll” dans le “php.ini” pour pouvoir utiliser ces fonctions. En PHP 4, cette bibliothèque DLL se trouve dans le dossier “extensions/” avec les binaires PHP pour Windows téléchargées. Vous pouvez télécharger ces bibliothèques DLL pour ces extensions PECL depuis la page de téléchargement de PHP sous sur la page http://snaps.php.net/. Configuration à l'exécutionCette extension ne définit aucune directive de configuration. Types de ressourcesIl y a deux types de ressources utilisées dans le module ZIP. La première représente le dossier ZIP pour l’archive ZIP, la seconde, l’entrée ZIP pour les entrées de l’archive. Constantes pré-définiesCes constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l’exécution. ZipArchive utilise des constantes de classe. Il y a trois types de constantes, les flags (FL_), les erreurs (ER_) ou les modes (no prefix). “ZIPARCHIVE::CREATE” (entier) Crée l’archive si elle n’existe pas. “ZIPARCHIVE::OVERWRITE” (entier) Démarre toujours une nouvelle archive. Ce mode écrase le fichier s’il existe déjà. “ZIPARCHIVE::EXCL” (entier) Erreur si l’archive existe déjà. “ZIPARCHIVE::CHECKCONS” (entier) Effectue des analyses supplémentaires de consistences et émet une erreur si elles échouent. “ZIPARCHIVE::FL_NOCASE” (entier) Ignore la casse sur le nom “ZIPARCHIVE::FL_NODIR” (entier) Ignore le composant dossier “ZIPARCHIVE::FL_COMPRESSED” (entier) Lit les données compressées “ZIPARCHIVE::FL_UNCHANGED” (entier) Utilise les données originales, ignore les modifications “ZIPARCHIVE::CM_DEFAULT” (entier) meilleur compression ou stocke “ZIPARCHIVE::CM_STORE” (entier) stocké (non-compressé) “ZIPARCHIVE::CM_SHRINK” (entier) retrait “ZIPARCHIVE::CM_REDUCE_1” (entier) réduit de facteur 1 “ZIPARCHIVE::CM_REDUCE_2” (entier) réduit de facteur 2 “ZIPARCHIVE::CM_REDUCE_3” (entier) réduit de facteur 3 “ZIPARCHIVE::CM_REDUCE_4” (entier) réduit de facteur 4 “ZIPARCHIVE::CM_IMPLODE” (entier) réunit “ZIPARCHIVE::CM_DEFLATE” (entier) compression “ZIPARCHIVE::CM_DEFLATE64” (entier) compression 64 “ZIPARCHIVE::CM_PKWARE_IMPLODE” (entier) réunit PKWARE “ZIPARCHIVE::CM_BZIP2” (entier) algorithme BZIP2 “ZIPARCHIVE::ER_OK” (entier) Aucune erreur “ZIPARCHIVE::ER_MULTIDISK” (entier) archives ZIP multi-disques non supportées “ZIPARCHIVE::ER_RENAME” (entier) échec du renommage du fichier temporaire “ZIPARCHIVE::ER_CLOSE” (entier) échec de la fermeture de l’archive ZIP “ZIPARCHIVE::ER_SEEK” (entier) erreur de pointeur “ZIPARCHIVE::ER_READ” (entier) erreur de lecture “ZIPARCHIVE::ER_WRITE” (entier) erreur d’écriture “ZIPARCHIVE::ER_CRC” (entier) erreur CRC “ZIPARCHIVE::ER_ZIPCLOSED” (entier) archive ZIP fermée “ZIPARCHIVE::ER_NOENT” (entier) le fichier n’existe pas “ZIPARCHIVE::ER_EXISTS” (entier) le fichier existe déjà “ZIPARCHIVE::ER_OPEN” (entier) impossible d’ouvrir le fichier “ZIPARCHIVE::ER_TMPOPEN” (entier) échec lors de la création du fichier temporaire “ZIPARCHIVE::ER_ZLIB” (entier) erreur Zlib “ZIPARCHIVE::ER_MEMORY” (entier) échec d’allocation mémoire “ZIPARCHIVE::ER_CHANGED” (chaîne de caractères) l’entrée a été modifiée “ZIPARCHIVE::ER_COMPNOTSUPP” (entier) méthode de compression non supportée “ZIPARCHIVE::ER_EOF” (entier) EOF prématuré “ZIPARCHIVE::ER_INVAL” (entier) argument invalide “ZIPARCHIVE::ER_NOZIP” (entier) ce n’est pas une archive ZIP “ZIPARCHIVE::ER_INTERNAL” (entier) erreur interne “ZIPARCHIVE::ER_INCONS” (entier) archive ZIP inconsistente “ZIPARCHIVE::ER_REMOVE” (entier) impossible d’effacer le fichier “ZIPARCHIVE::ER_DELETED” (entier) l’entrée a été supprimée Exemples
<?php $zip = new ZipArchive(); $filename = "./test112.zip"; if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) { exit("cannot open <$filename>\n"); } $zip->addFromString("testfilephp.txt" . time(), "#1 Ceci est un test, ajouté en tant que fichier testfilephp.txt.\n"); $zip->addFromString("testfilephp2.txt" . time(), "#2 Ceci est un test, ajouté en tant que fichier testfilephp2.txt.\n"); $zip->addFile($thisdir . "/too.php","/testfromfile.php"); echo "numfiles: " . $zip->numFiles . "\n"; echo "status:" . $zip->status . "\n"; $zip->close(); ?>
<?php $za = new ZipArchive(); $za->open('test_with_comment.zip'); print_r($za); var_dump($za); echo "numFiles: " . $za->numFiles . "\n"; echo "status: " . $za->status . "\n"; echo "statusSys: " . $za->statusSys . "\n"; echo "filename: " . $za->filename . "\n"; echo "comment: " . $za->comment . "\n"; for ($i=0; $i<$za->numFiles;$i++) { echo "index: $i\n"; print_r($za->statIndex($i)); } echo "Fichier numéro : " . $za->numFiles . "\n"; ?>
<?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 leurs contenus. L’archive “test2.zip” utilisé dans cet exemple est une des archives de test des sources de ZZIPlib.
<?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 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_entry, zip_entry_filesize($zip_entry)); echo "$buf\n"; zip_entry_close($zip_entry); } echo "\n"; } zip_close($zip); } ?> Table des matières zip_close – Ferme une archive Zipzip_entry_close – Ferme un dossier d’archivezip_entry_compressedsize – Lit la taille compressée d’un dossier d’archiveszip_entry_compressionmethod – Lit la méthode de compression utilisée sur un dossier d’archiveszip_entry_filesize – Lit la taille décompressée d’un dossier d’archiveszip_entry_name – Lit le nom d’un dossier d’archiveszip_entry_open – Ouvre un dossier d’archives en lecturezip_entry_read – Lit le contenu d’un fichier dans un dossierzip_open – Ouvre une archive ZIPzip_read – Lit la prochaine entrée dans une archive ZIPZipArchive::addFile – Ajoute un fichier à l’archive ZIP depuis le chemin fourniZipArchive::addFromString – Ajoute un fichier à une archive ZIP en utilsant son contenuZipArchive::close – Ferme l’archive active (ouverte ou nouvellement créée)ZipArchive::deleteIndex – Efface une entrée de l’archive en utilisant son indexZipArchive::deleteName – Efface une entrée dans l’archive en utilisant son nomZipArchive::extractTo – Extrait le contenu de l’archiveZipArchive::getArchiveComment – Retourne le commentaire de l’archive ZIPZipArchive::getCommentIndex – Retourne le commentaire d’une entréeZipArchive::getCommentName – Retourne le commentaire d’une entrée en utilisant le nom de l’entréeZipArchive::getFromIndex – Retourne le contenu d’une entrée en utilisant son indexZipArchive::getFromName – Retourne le contenu de l’entrée en utilisant son nomZipArchive::getNameIndex – Retourne le nom d’une entrée en utilisant son indexZipArchive::getStream – Récupère un gestionnaire de fichier pour l’entrée définie par son nom (lecture seul)ZipArchive::locateName – Retourne l’index d’une entrée de l’archiveZipArchive::open – Ouvre une archive ZIPZipArchive::renameIndex – Renomme une entrée définie par son indexZipArchive::renameName – Renomme une entrée définie par son nomZipArchive::setArchiveComment – Définit le commentaire d’une archive ZIPZipArchive::setCommentIndex – Définit le commentaire d’une entrée définie par son indexZipArchive::setCommentName – Définit le commentaire d’une entrée spécifiée par son nomZipArchive::statIndex – Récupère les détails d’une entrée définie par son indexZipArchive::statName – Récupère les détails de l’entrée définie par son nomZipArchive::unchangeAll – Annule toutes les modifications faites sur l’archiveZipArchive::unchangeArchive – Annule toutes les modificatons globales faites sur l’archiveZipArchive::unchangeIndex – Annule toutes les modifications faites sur une entrée, définie par nom indexZipArchive::unchangeName – Annule toutes les modifications faites sur une entrée, définie par son nom Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |