Я использую довольно простой скрипт, чтобы открывать и анализировать несколько XML-файлов, которые gzipped. Мне также нужно сделать одну и ту же основную операцию с ZIP-файлом. Похоже, это должно быть просто, но я не смог найти то, что выглядел как эквивалентный код где угодно.
Вот простая версия того, что я уже делаю:
$import_file = "source.gz"; $sfp = gzopen($import_file, "rb"); ///// OPEN GZIPPED data while ($string = gzread($sfp, 4096)) { //Loop through the data /// Parse Output And Do Stuff with $string } gzclose($sfp);
Что бы сделать то же самое для заархивированного файла?
Если у вас есть PHP 5> = 5.2.0, PECL zip> = 1.5.0, то вы можете использовать библиотеки ZipArchive:
$zip = new ZipArchive; if ($zip->open('source.zip') === TRUE) { for($i = 0; $i < $zip->numFiles; $i++) { $fp = $zip->getStream($zip->getNameIndex($i)); if(!$fp) exit("failed\n"); while (!feof($fp)) { $contents = fread($fp, 8192); // do some stuff } fclose($fp); } } else { echo 'Error reading zip-archive!'; }
Возможно, вы можете использовать эту библиотеку – ZZIPLib
Вот пример: http://www.timlinden.com/blog/website-development/unzip-files-with-php/