Qui ne connaît pas, des tonnes d'archives formats zip, gz différents, BZ, lzma, etc sont sur le bureau sans aucun problème. Lors de la création d'une application Web en PHP, le plus compliqué, donc je l'ai fait exec () et 7-zip résolu.
L'appendice un paquet avec PHP - Fonction d'extraire et de 7zip - Binary pour les 32 / 64 - bits systèmes Linux et Windows.
Pour une utilisation sur les systèmes Linux, le 64/7z 32/7z et le rendre exécutable et intégré dans le script functions.php. La fonction extractAll avec l'archive et éventuellement les paramètres 7zip appelé. rmdirr () supprime un répertoire de façon récursive (même si il ya des fichiers dans des sous répertoires), très pratique pour les archives juste déballé.
Téléchargement: php-7z
/* Nerd 2.0
* March 2010
* www.nerd20.de
*/
function extractAll($file, $cmd = '') {
// 64 / 32 Bit - Unix, Windows
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$cmd = '32\7z x '.$file.' -y '.$cmd;
}
else {
if(intval(-6981276091) == -6981276091) {
$cmd = '64/7z x '.$file.' -y '.$cmd;
}
else {
$cmd = '32/7z x '.$file.' -y '.$cmd;
}
}
// Ausführen
exec($cmd, $output);
return $output;
}
/**
* Delete a file, or a folder and its contents (recursive algorithm)
*
* @author Aidan Lister <aidan@php.net>
* @version 1.0.3
* @link http://aidanlister.com/repos/v/function.rmdirr.php
* @param string $dirname Directory to delete
* @return bool Returns TRUE on success, FALSE on failure
*/
function rmdirr($dirname)
{
// Sanity check
if (!file_exists($dirname)) {
return false;
}
// Simple delete for a file
if (is_file($dirname) || is_link($dirname)) {
return unlink($dirname);
}
// Loop through the folder
$dir = dir($dirname);
while (false !== $entry = $dir->read()) {
// Skip pointers
if ($entry == '.' || $entry == '..') {
continue;
}
// Recurse
rmdirr($dirname . DIRECTORY_SEPARATOR . $entry);
}
// Clean up
$dir->close();
return rmdir($dirname);
}
Vielen Dank an aidanlister.com für das Löschen von Verzeichnissen und dem smarty Blog für 32- / 64-Bit Abfrage.

