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.
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 !