PHP et comment décompresser une archive ZIP
Agence web » Actualités du digital » PHP : comment décompresser une archive ZIP

PHP : comment décompresser une archive ZIP

Dézipper une archive ZIP

Aujourd’hui, lorsqu’on recherche comment décompresser une archive de type ZIP en PHP dans Google, on trouve en première position les fonctions d’extraction de la librairie PECL. Mais n’est-il pas possible de décompresser ce format standard sans devoir passer par une bibliothèque tierce ? Si ! C’est d’ailleurs cette solution que je vous recommande. Et ce pour une multitude de raisons :

  • Aucune bibliothèque supplémentaire.
  • Fonctionnalité déjà intégré.
  • Fonctionnalité commune sur toutes les plateformes disposant de PHP 4 >= 4.1.0 ou PHP 5 >= 5.1.0
  • Facile à installer grâce à apt-get pour les linuxiens ou grâce aux différents tutoriels pour les autres plateformes.
  • Limiter la redondance de code car il faut bien se le dire, l’API de PECL à beau être plus facile à appréhender le code que l’on dira de « bas niveau » est le même, que l’on passe par PHP natif ou par PECL ZipArchive

Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function unzip($path_zip, $tmp_folder = « /tmp/ »)
{
$all_files = array();
$zip = zip_open($path_zip);
if ($zip) {
$stream = zip_read($zip);
while ($stream) {
var_dump($zip_name);
$zip_name = zip_entry_name($stream);
$path_file_unzip = $tmp_folder.$zip_name;
$dir_folder = substr($path_file_unzip, 0, strrpos($path_file_unzip, « / »));
mkdir($dir_folder, 0777, true);
$fp = fopen($path_file_unzip, « w »);
array_push($all_files, $path_file_unzip);
if (zip_entry_open($zip, $stream, « r »)) {
$buf = zip_entry_read($stream, zip_entry_filesize($stream));
fwrite($fp, « $buf »);
zip_entry_close($stream);
fclose($fp);
}
$stream = zip_read($zip);
}
zip_close($zip);
}
return $all_files;
}

★★★★★