ZipArchive::getFromIndex

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

ZipArchive::getFromIndexReturns the entry contents using its index

说明

public ZipArchive::getFromIndex ( int $index , int $len = 0 , int $flags = 0 ) : string|false

Returns the entry contents using its index.

参数

index

Index of the entry

len

The length to be read from the entry. If 0, then the entire entry is read.

flags

The flags to use to open the archive. the following values may be ORed to it.

  • ZipArchive::FL_UNCHANGED

  • ZipArchive::FL_COMPRESSED

返回值

Returns the contents of the entry on success 或者在失败时返回 false.

范例

Example #1 Get the file contents

<?php
$zip 
= new ZipArchive;
if (
$zip->open('test.zip') === TRUE) {
    echo 
$zip->getFromIndex(2);
    
$zip->close();
} else {
    echo 
'failed';
}
?>

参见

User Contributed Notes

Ruben 12-May-2015 07:59
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
poorpal at example dot com 16-Mar-2015 10:03
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.
StanE 17-Dec-2014 02:35
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.
matt3k 26-Jun-2013 01:21
Note, length is in characters and not bytes.
jana.vasseru 17-Aug-2007 04:26
Note that getFromIndex returns false for directories.