For detecting folders use function ::getNameIndex:
//$zip = ZipArchive::open()
$entry = $zip->getNameIndex($i);
$isDir = (substr($entry, -1, 1) == '/');
Thanks to Alex Howansky @ http://stackoverflow.com/a/19299626/2747584
(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)
ZipArchive::getFromIndex — Devuelve el contenido de la entrada usando su índice
$index
[, int $length
= 0
[, int $flags
]] ) : stringDevuelve el contenido de la entrada usando su índice.
index
El índice de la entrada
length
La longitud que se see desde la entrada. Si es 0, entonces toda la entrada se lee.
flags
Las flags usadas para abrir el fichero. Los siguientes valores pueden ser Ored.
ZipArchive::FL_UNCHANGED
ZipArchive::FL_COMPRESSED
Devuelve el contenido de la entrada si se ejecutó con éxito o FALSE
en caso de error.
Ejemplo #1 Obtener el contenido del fichero
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
echo $zip->getFromIndex(2);
$zip->close();
} else {
echo 'falló';
}
?>
For detecting folders use function ::getNameIndex:
//$zip = ZipArchive::open()
$entry = $zip->getNameIndex($i);
$isDir = (substr($entry, -1, 1) == '/');
Thanks to Alex Howansky @ http://stackoverflow.com/a/19299626/2747584
both getFromIndex and getFromName leak memory. Beware specially if you use them inside a long running loop. Even closing and re-opening the zip file doesn't help.