Class ZipExtract, décompresser (extracter) un fichier zip avec PHP
Par Gerald Lonlas le vendredi 27 juillet, 2007, 09:00 - Dev: PHP, MySQL - Lien permanent
ZipExtract est une classe en PHP que je viens de faire pour décompresse des archives au format Zip.
Ayant eu du mal à trouver ce que je voulais en matière de décompression d’archive zip en PHP (classe trop lourde, ensemble de fonctions à bidouiller), j’ai décidé de faire ma propre classe.
Fonctionnalités de la classe ZipExtract.lib.php
Pour l’instant les fonctionnalités proposées par la classes sont simple et permettent de :
- Vérifier que l’archive zip n’est pas corrompu.
- Décompresser de l’archive.
- Choisir le chemin de destination.
- Supprimer l’archive.
- Liste les fichiers extractés.
Prérequis
Pour utiliser cette classe vous devez avoir au moins les versions de PHP suivante PHP 4 >= 4.2.0, PHP 5 >= 5.2.0.
Pour plus d’informations, le manuel php.net sur ZIP
Téléchargement
- zipextract.lib.zip (Format Zip : 2 Ko) : ZipExtract.lib.php version 1.0.01
- Documentation de la classe : version 1.0 (Format PDF 22 Ko)
Utilisation de la classe
<?php
// Inclusion de la class ZipExtract
require_once( 'zipextract.lib.php' );
$filename = 'install.zip'; // Sous unix / linux
$filename = 'c:\\tmp\\install.zip'; // Sous windows si votre archive se trouve dans le dossier C:\tmp
// Création de l'objet ZipExtract
$zip = new ZipExtract();
if( $zip->OpenZipFile( $filename ) )
{
// Parametrage de la classe
$zip->SetOutputDestination('util/');
$zip->SetIsChangeNameFile(false);
// Extraction des fichiers
$zip->Extract();
// Suppression du fichier ZIP
if( $zip->DeleteZipFile() )
{
echo "<p>Fichier zip supprimé</p>";
}
else
{
echo "<p>Pb suppression fichier Zip</p>";
}
// Affiche les fichiers dans le zip
echo "Fichiers extractés : <ul>";
foreach ($zip->ListFiles() as $nom_fichier)
{
echo "<li>".$nom_fichier.'</li>';
}
echo "</ul>";
}
?>
N’hésitez pas à me laisser un commentaire ou à me contacter pour toutes vos questions, critiques, suggestions

Commentaires
Peut être à intégrer à mon futur Framework??
Sans problème tu peux la rajouter a ton framework
Bonjour
Quand je teste ce script, j'ai l'erreur :
Warning: zip_read() expects parameter 1 to be resource, integer given in C:\Program Files\EasyPHP 2.0b1\phpmyadmin\libraries\zipextract.lib.php on line 86
Warning: zip_close() expects parameter 1 to be resource, integer given in C:\Program Files\EasyPHP 2.0b1\phpmyadmin\libraries\zipextract.lib.php on line 139
Pb suppression fichier Zip
Fichiers extractés :
merci de vortre aide
Bonsoir Perezj
Je viens de modifier la classe (modification de l'itération d'ouverture d'un ZIP). Désormais la méthode : Zip::OpenZipFile( $filename ) renverra false en cas de problème (Mauvais fichiers, ou fichier introuvable).Vous pouvez télécharger la nouvelle version (v 1.0.01) à cette adresse : http://blog.dreaminvasion.com/telechargement/class-php-zipextract
/zipextract.lib-1.0.01.zip
Votre problème vient du chemin vers le fichier Zip, votre serveur Apache / PHP est sous Windows il faudra mettre le chemin entier vers l'archive.
Par exemple :
Votre Zip est dans le dossier : C:\TMP\install.zip
Changez : $filename = 'install.zip'; par $filename = 'c:\\tmp\\install.zip';
Sous Linux ce problème ne se pose pas
Pour commencer je te félicite pour ton travail.
mais si je poste un commentaire, c'est pour demander ton aide.
quand je tape l'adresse de la page php il me met ceci
Parse error: syntax error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home.10.18/francd/www/stockage/zipextract.lib.php on line 62
alors que faire??
pour le fichier zip je met le chemin complet "/home.10.18/francd/www/stockage/3dapps_2007.zip"
mais ca ne fonctionne pas
Je viens de re-tester la classe sur mes serveurs elle fonctionne.
Par contre mes serveurs fonctionnes avec PHP5.
Si tu es sur PHP4 l'erreur doit venir des mots clés "public" qui ne sont pas pris en compte sous PHP4
Tu trouveras les mots clés "public" aux lignes :
Hello,
Super pratique ta classe, cependant, un peu de français ne faisant pas de mal pour ton bon informaticien, on dit extraire une archive, et non extracter.
Donc de ce fait, on ne dit pas non plus "fichiers extractés" mais "fichiers extraits"
A+
PETE COUILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLE le lien est mort..