2010-09-16 65 views
3

我有一个zip文件。 我需要一个简单的方法来读取zip文件的名称并读取其中一个文件的内容。Php Zip操作

这可以直接在内存中完成,无需保存,打开和读取文件?

回答

3

您需要打开存档,然后可以通过索引遍历文件:

$zip = new ZipArchive(); 
if ($zip->open('archive.zip')) 
{ 
    for($i = 0; $i < $zip->numFiles; $i++) 
    { 
      echo 'Filename: ' . $zip->getNameIndex($i) . '<br />'; 
    } 
} 
else 
{ 
    echo 'Error reading .zip!'; 
} 

要读取,你可以使用ZipArchive::getStream($name)单个文件的内容。

$zip = new ZipArchive(); 
$zip->open("archive.zip"); 
$fstream = $zip->getStream("index.txt"); 
if(!$fp) exit("failed\n"); 

while (!feof($fp)) { 
    $contents .= fread($fp, 2); 
} 

另一种办法直接做到这一点是使用zip://流包装:

$file = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r'); 
... 
+0

以及如何读取文件之一的内容是什么? – danidacar 2010-09-16 08:59:00

+1

对于只读访问,您需要http://www.php.net/manual/en/function.ziparchive-getstream.php,否则您必须先提取它 – Fanis 2010-09-16 09:13:19

+0

对不起,以某种方式误解了您的问题 - 修复了回答。 – halfdan 2010-09-16 09:35:00