downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

ZipArchive::statName> <ZipArchive::setCommentName
[edit] Last updated: Fri, 24 May 2013

view this page in

ZipArchive::statIndex

(PHP 5 >= 5.2.0, PECL zip >= 1.1.0)

ZipArchive::statIndexObtiene los detalles de una entrada definida por su índice

Descripción

mixed ZipArchive::statIndex ( int $index [, int $flags ] )

La función obtiene información acerca de la entrada definida por su índice.

Parámetros

index

Índice de la entrada

flags

ZIPARCHIVE::FL_UNCHANGED podría ser puesto con otros OR lógicos en él para pedir información acerca del fichero original en el archivo, ignorando cualquiera de los cambios hechos.

Valores devueltos

Devuelve una matríz conteniendo los detalles de la entrada, o FALSE en caso de error.

Ejemplos

Ejemplo #1 Volcar la información estadística de una entrada

<?php
$zip 
= new ZipArchive;
$res $zip->open('test.zip');
if (
$res === TRUE) {
    
print_r($zip->statIndex(3));
    
$zip->close();
} else {
    echo 
'falló, código:' $res;
}
?>

El resultado del ejemplo sería algo similar a:

Array
(
    [name] => foobar/baz
    [index] => 3
    [crc] => 499465816
    [size] => 27
    [mtime] => 1123164748
    [comp_size] => 24
    [comp_method] => 8
)


add a note add a note User Contributed Notes ZipArchive::statIndex - [2 notes]
up
0
Chris Lewis
1 year ago
Note that the signed-integer CRC result is only true on 32-bit systems. 64-bit systems return correct CRCs.

A safer way (as recommended by crc32() function page) might be:

if ($file['crc'] < 0)
   $file['crc'] = sprintf("%u",$file['crc']);
up
0
Anonymous
1 year ago
The CRC returned from this method is a signed number and so can be negative. This isn't how most CRC's are represented and so can cause problems. Another thing to know is that the standerd CRC algorithm used for zip files is CRC32b.

So to put this together lets say that you wanted to extract the first file from a zip and then compare the original CRC with the CRC for the extracted file this is what you would need to do. (proper error checking is omitted for simplicity).

<?php
 $zip
= new ZipArchive();

 
$zip->open("myZip.zip");

 
$stat = $zip->statIndex( 0 );

 
$name = $stat['name'];

 
$oldCrc = $stat['crc'];

 
$zip->extractTo("myPath", $name);

 
$newCrc = hexdec(hash_file("crc32b", "myPath/" . $name));

 
// Have to test both cases as the unsigned CRC from within the zip might appear negative as a signed int.
 
if($newCrc !== $oldCrc && ($oldCrc + 4294967296) !== $newCrc) {
    echo
"The files don't match!";
 }
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites