2012-03-22 24 views

Respuesta

39

como se encuentra como un comentario sobre http://www.php.net/ziparchive:

El siguiente código se puede utilizar para obtener una lista de todos los nombres de archivo en un archivo 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

Gracias por la respuesta. Debo haber perdido el campo numFiles al revisar la documentación de ZipArchive. – Roman

+4

La interfaz del objeto ZipArchive es simplemente extraña. – flu

+0

@flu: Solo mi pensamiento ahora mismo. Se ve incluso peor que Simple PHP antiguo sin clases. –

-3

Pregunta repetida. Buscar antes de publicar 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 así que regañas una pregunta duplicada y subvencionas el comportamiento con una respuesta. Nice :) – rdlowrey

+9

vote para cerrar la pregunta duplicada en lugar de duplicar las respuestas; debe leer la Biblia antes de predicarla. – 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); 
} 
?> 
Cuestiones relacionadas