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 — Возвращает содержимое элемента по его индексу
Возвращает содержимое элемента по его индексу.
indexИндекс элемента.
len
Размер читаемых данных из элемента. Если 0, содержимое читается полностью.
flagsФлаги используемые для открытия архива. Может быть установлено только одно нижеприведённое значение.
Возвращает содержимое элемента при успехе или false, если возникла ошибка.
Пример #1 Получить содержимое файла
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
echo $zip->getFromIndex(2);
$zip->close();
} else {
echo 'ошибка';
}
?>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/2747584Unlike 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.