2010-09-16 74 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