2012-03-22 33 views
20

Tôi đã thấy lớp ZipArchive trong PHP cho phép bạn đọc các tệp zip. Nhưng tôi tự hỏi nếu có một cách để lặp lại nội dung của nó mà không cần giải nén tệp trước tiênTrong PHP, có thể kiểm tra nội dung của tệp Zip mà không trích xuất nội dung của nó trước không?

+0

thể trùng lặp của [PHP thư viện mà có thể liệt kê nội dung của zip/rar file] (http://stackoverflow.com/questions/1524186/php-library-that -can-list-contents-of-zip-rar-files) –

Trả lời

39

Như tìm thấy dưới dạng một comment trên http://www.php.net/ziparchive:

Các mã sau đây có thể được sử dụng để có được một danh sách tất cả các tên tập tin trong một tập tin 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

Cảm ơn câu trả lời. Tôi phải bỏ lỡ trường numFiles khi xem qua tài liệu ZipArchive. – Roman

+4

Giao diện của đối tượng ZipArchive chỉ là lạ. – flu

+0

@flu: Chỉ là suy nghĩ của tôi ngay bây giờ. Trông còn tồi tệ hơn Plain Old PHP mà không có lớp. –

-3

Câu hỏi lặp lại. Tìm kiếm trước khi đăng. 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

lol vì vậy bạn mắng một câu hỏi trùng lặp rồi trợ cấp cho hành vi bằng một câu trả lời. Nice :) – rdlowrey

+9

bỏ phiếu để đóng câu hỏi trùng lặp thay vì sao chép câu trả lời - bạn nên đọc Kinh Thánh trước khi rao giảng nó. – Repox

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); 
} 
?> 
Các vấn đề liên quan