ZipArchive::getFromIndex

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

ZipArchive::getFromIndexインデックスを使用して、エントリの内容を返す

説明

ZipArchive::getFromIndex ( int $index [, int $length = 0 [, int $flags ]] ) : string

インデックスを使用して、エントリの内容を返します。

パラメータ

index

エントリのインデックス。

length

エントリから読み込む長さ。0 の場合はエントリ全体を読み込みます。

flags

アーカイブのオープン時に使用するフラグ。以下の値を OR で連結して使用します。

  • ZipArchive::FL_UNCHANGED

  • ZipArchive::FL_COMPRESSED

返り値

成功した場合にエントリの内容、失敗した場合に FALSE を返します。

例1 ファイルの内容の取得

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

参考

add a note add a note

User Contributed Notes 5 notes

up
3
StanE
4 years ago
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.
up
1
poorpal at example dot com
4 years ago
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.
up
2
Ruben
4 years ago
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
up
0
matt3k
6 years ago
Note, length is in characters and not bytes.
up
-4
jana.vasseru
12 years ago
Note that getFromIndex returns false for directories.
To Top