Нужен PHP-скрипт для распаковки и циклического перемещения по ZIP-файлу - PullRequest
2 голосов
/ 08 апреля 2010

Я использую довольно простой скрипт, чтобы открыть и проанализировать несколько xml-файлов, которые распакованы. Мне также нужно выполнить ту же базовую операцию с файлом 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);      

Что бы сделать то же самое для заархивированного файла?

1 Ответ

4 голосов
/ 08 апреля 2010

Если у вас 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!'; 
} 
...