[PHP] Extraire une archive au format ZIP

Vous voilà confrontés à la problématique de devoir traiter un lot de fichiers CSV sur un serveur qui est configuré pour restreindre la taille des fichiers envoyés par l’utilisateur.trice. Pour contourner cette limitation sans modifier la configuration du serveur vous pouvez passer par une archive au format ZIP, dont vous devez extraire le contenu. Le langage PHP propose cette possibilité et cela ne nécessite que quelques lignes de code.

Extraire une archive ZIP grâce à PHP

Pour extraire une archive au format ZIP grâce à PHP, ce n’est pas bien sorcier.

Pré-requis

Tout d’abord cella nécessite l’installation et la configuration de l’extension ZIP. Celle-ci utilise la librairie libzip écrite en C. Pour plus de détails quant aux étapes à suivre, consultez la documentation officielle.

Instancier l’objet

Pour commencer vous devez instancier un objet de la classe ZipArchive.

$zip = new \ZipArchive();

Cette classe, disponible depuis PHP 5.2.0, est plutôt bien documentée dans le manuel officiel de PHP.

Ouvrir l’archive

Une fois l’objet instancié, vous devez ouvrir l’archive afin d’en manipuler son contenu. On utilise pour cela la méthode open() qui prend en paramètre le chemin du fichier. Le second paramètre est facultatif.

if ($zip->open($file))
{
   // ...
}

En cas d’ouverture réussie, la méthode renvoie true, sinon elle renvoie un code d’erreur (voir les valeurs de retour dans la documentation officielle).

Extraire les fichiers

Nous allons maintenant extraire les fichiers grâce à la méthode extractTo(). Le premier paramètre est le répertoire dans lequel on va extraire les fichiers. Le second paramètre est facultatif mais peut contenir la liste des fichiers que l’on souhaite extraire (au format chaîne ou sous forme de tableau).

$zip->extractTo($fp);

Fermer l’archive

Comme lors de la manipulation de fichiers classiques, il faut fermer le flux. Cela se fait avec la méthode close(). Cette méthode renvoie un booléen pour indiquer si l’opération s’est correctement effectuée ou non.

$zip->close();

Une fois le fichier fermé vous pouvez commencer à parcourir et traiter le contenu extrait. Vous savez désormais comment manipuler et extraire une archive au format ZIP grâce à PHP.

D’autres astuces pour PHP sont disponibles sur ce blog.

Bon développement !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *