PHP читает текстовый файл из каталога zip-файлов - PullRequest
4 голосов
/ 13 декабря 2010

У меня есть каталог, который содержит набор заархивированных файлов. в каждом из этих файлов есть файл foo.txt.

Как я могу прочитать этот текстовый файл из каждого почтового индекса?

Я знаю, glob используется для вывода списка всех файлов из каталога

.

Ответы [ 4 ]

4 голосов
/ 13 декабря 2010

PHP имеет расширение , которое позволяет работать с ZIP-архивами.

Обратите внимание, что для доступа к этому файлу вам не нужно разархивировать весь архив. Метод ZipArchive :: extractTo позволяет указать, что извлекать.

$zip = new ZipArchive;
$res = $zip->open('test.zip');
$zip->extractTo('my/extract/folder/', 'foo.txt');
2 голосов
/ 13 декабря 2010

Вы можете использовать расширение PHP zip как:

foreach(glob('*.zip') as $zipFile) {

        $zip = new ZipArchive;

        if ($zip->open($zipFile) === TRUE) {

                // get the filename without extension.
                $filename = pathinfo($zipFile,PATHINFO_FILENAME);

                // extract.
                $zip->extractTo($filename);
                $zip->close();
                echo "Extracted contents of $zipFile to $filename","\n";
        } else {
                echo "Failed to open $zipFile","\n";   
        }
}
1 голос
/ 13 декабря 2010

Вы ознакомились с функциями P HP5 ZipArchive?

// you could extract the txt-file only and read in the content afterwards
$value = 'myzipfile.zip';
$entry = $zip->getNameIndex('foo.txt');
                copy('zip://'.dirname(__FILE__).'/zip_files/'.$value.'#'.$entry, 'txt_files/'.$value.'.txt');
} 
$zip->close();

// now you can access the file and do with the content what everyou like

Полезный ТАК вопрос: https://stackoverflow.com/questions/4085333/modifying-a-single-text-file-in-a-zip-file-in-php

1 голос
/ 13 декабря 2010

Насколько я знаю, доступ к сжатым данным невозможен, и вам придется сначала распаковать их.

Если вам удобно, вы можете использовать это расширение PHP: http://www.php.net/manual/en/book.zip.php

...