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, PHP 8, PECL zip >= 1.1.0)
ZipArchive::getFromIndex — Devuelve el contenido de la entrada usando su índice
Devuelve el contenido de la entrada usando su índice.
index
El índice de la entrada
len
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
Unlike what "jana.vasseru" said 7 years ago, this method does not return FALSE for folders (anymore?). It seems that there is no way to find out if an entry is a directory of file.
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.