PHP – Fonction unzip

Cette fonction comme son nom l’indique elle permet d’unzip un fichier. Il est possible d’effacer le zip en mettant la varible wipe_zip a true.

Vous avez une idée ? Trouvez gratuitement des développeurs sur Codeur.com !

Recevez des devis (gratuit)

Dans le cas où le zip est corrompu ou le fichier passé en paramètre n’est pas un zip alors la fonction renvoie FALSE.

Dans le cas où tout fonctionne correctement elle retourne un tableau des noms de fichiers extraits.


[php]function unzip($file, $path= », $wipe_zip=false){
$tab_liste_fichiers = array(); //Initialisation
$zip = zip_open($file);

if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
if (zip_entry_filesize($zip_entry) > 0){
$complete_path = $path.dirname(zip_entry_name($zip_entry));
/*On supprime les éventuels caractères spéciaux et majuscules*/
$nom_fichier = zip_entry_name($zip_entry);
$nom_fichier = strtr($nom_fichier,
« ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ »,
« AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn »);
$nom_fichier = strtolower($nom_fichier);
$nom_fichier = preg_replace(‘/[^a-zA-Z0-9.]/’,’-‘,$nom_fichier);
/*On ajoute le nom du fichier dans le tableau*/
array_push($tab_liste_fichiers,$nom_fichier);
$complete_name = $path.$nom_fichier;
if(!file_exists($complete_path)){
$tmp =  »;
foreach(explode(‘/’,$complete_path) AS $k) {
$tmp .= $k.’/’;
if(!file_exists($tmp)){
mkdir($tmp, 0755);
}
}
}
/*On extrait le fichier*/
if (zip_entry_open($zip, $zip_entry, « r »)) {
$fd = fopen($complete_name, ‘w’);

fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));

fclose($fd);
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);

/*On efface éventuellement le fichier zip d’origine*/
if ($wipe_zip === true){
unlink($file);
}

return $tab_liste_fichiers;
}
return FALSE;

}[/php]

L'équipe de WebActus.net vous propose tous les jours des articles sur l'univers des startups, du e-commerce et du growth hacking.

Rejoignez la communauté Webactus

Recevez régulièrement les meilleures actus et ressources

Pas de spam, vous pouvez vous désabonner à tous moment.