ZipArchive::getFromIndex()
(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)
Returns the entry contents using its index
说明
ZipArchive::getFromIndex(int $index[,int $length= 0[,int $flags]]): string
Returns the entry contents using its index.
参数
- $index
Index of the entry
- $length
The length to be read from the entry. If0, 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
.
范例
Get the file contents
<?php $zip = new ZipArchive; if ($zip->open('test.zip') === TRUE) { echo $zip->getFromIndex(2); $zip->close(); } else { echo 'failed'; } ?>
参见
- ZipArchive::getFromName() Returns the entry contents using its name
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.
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
Note, length is in characters and not bytes.
Note that getFromIndex returns false for directories.