PHP: cum să decomprimați o arhivă ZIP
Dezarhivați o arhivă ZIP
Astăzi, când cauți cum să decomprimați o arhivă ZIP în PHP în Google, găsiți pe prima poziție funcțiile de extracție ale bibliotecii PECL. Dar nu este posibil să decomprimați acest format standard fără a fi nevoie să treceți printr-o bibliotecă terță parte? Fie că! Aceasta este solutia pe care ti-o recomand. Și asta dintr-o multitudine de motive:
- Fără biblioteci suplimentare.
- Funcționalitate deja integrată.
- Funcționalitate comună pe toate platformele cu PHP 4 >= 4.1.0 sau PHP 5 >= 5.1.0
- Ușor de instalat datorită apt-get pentru utilizatorii Linux sau datorită diferitelor tutoriale pentru alte platforme.
- Limitați redundanța codului pentru că trebuie spus, PECL API poate fi mai ușor de înțeles codul despre care vom spune „low level” este același, indiferent dacă trecem prin PHP nativ sau prin PECL ZipArchive
Scenariu
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
|
funcţie dezarhivați($path_zip, $tmp_folder = „/tmp/”)
{
$all_files = mulțime,
$zip = zip_open($path_zip);
if ($zip) {
$stream = zip_read($zip);
în timp ce ($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, adevărat);
$fp = fopen($path_file_unzip, „w”);
array_push($toate_fișierele, $path_file_unzip);
if (zip_entry_open($zip, $stream, "r")) {
$buf = zip_entry_read($stream, zip_entry_filesize($stream));
fwrite($fp, „$buff”);
zip_entry_close($stream);
fclose($fp);
}
$stream = zip_read($zip);
}
zip_close($zip);
}
reveni $toate_fișierele;
}
|