2012-03-22 103 views
20

我已經看到了PHP中的ZipArchive類,它可以讓你閱讀zip文件。但我想知道是否有一種方法來迭代雖然它的內容沒有提取文件第一個在PHP中,可以先檢查Zip文件的內容而不先提取其內容?

+0

可能重複[PHP庫,可以列出ZIP/RAR文件的內容(http://stackoverflow.com/questions/1524186/php-library-that -can-list-contents-of-zip-rar-files) – 2012-03-22 06:42:44

回答

39

由於發現的評論​​:

下面的代碼可以用來獲得 一個zip文件,所有文件名的列表。

<?php 
$za = new ZipArchive(); 

$za->open('theZip.zip'); 

for($i = 0; $i < $za->numFiles; $i++){ 
    $stat = $za->statIndex($i); 
    print_r(basename($stat['name']) . PHP_EOL); 
} 
?> 
+0

感謝您的回答。在查看ZipArchive文檔時,我一定錯過了numFiles字段。 – Roman 2012-03-22 08:13:32

+4

ZipArchive對象的接口很奇怪。 – flu 2013-09-03 12:44:35

+0

@flu:只是我現在的想法。看起來比沒有類的Plain Old PHP還要糟糕。 – 2015-03-11 08:46:36

-3

重複的問題。發帖前搜索。 PHP library that can list contents of zip/rar files

<?php 

$rar_file = rar_open('example.rar') or die("Can't open Rar archive"); 

$entries = rar_list($rar_file); 

foreach ($entries as $entry) { 
    echo 'Filename: ' . $entry->getName() . "\n"; 
    echo 'Packed size: ' . $entry->getPackedSize() . "\n"; 
    echo 'Unpacked size: ' . $entry->getUnpackedSize() . "\n"; 

    $entry->extract('/dir/extract/to/'); 
} 

rar_close($rar_file); 

?> 
+9

大聲笑,所以你罵一個重複的問題,然後補貼行爲與答案。尼斯:) – rdlowrey 2012-03-22 06:42:02

+9

投票關閉重複的問題,而不是重複的答案 - 你應該在講道之前閱讀聖經。 – Repox 2012-03-22 06:51:34

14

http://www.php.net/manual/en/function.zip-entry-read.php

<?php 
$zip = zip_open("test.zip"); 

if ($zip) 
    { 
    while ($zip_entry = zip_read($zip)) 
    { 
    echo "<p>"; 
    echo "Name: " . zip_entry_name($zip_entry) . "<br />"; 

    if (zip_entry_open($zip, $zip_entry)) 
     { 
     echo "File Contents:<br/>"; 
     $contents = zip_entry_read($zip_entry); 
     echo "$contents<br />"; 
     zip_entry_close($zip_entry); 
     } 
    echo "</p>"; 
    } 

zip_close($zip); 
} 
?>