ZipArchive::statIndex
(PHP 5 >= 5.2.0, PECL zip >= 1.1.0)
ZipArchive::statIndex — Get the details of an entry defined by its index.
Описание
The function obtains information about the entry defined by its index.
Список параметров
- index
-
Index of the entry
- flags
-
ZIPARCHIVE::FL_UNCHANGED may be ORed to it to request information about the original file in the archive, ignoring any changes made.
Возвращаемые значения
Returns an array containing the entry details или FALSE в случае возникновения ошибки.
Примеры
Пример #1 Dump the stat info of an entry
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
print_r($zip->statIndex(3));
$zip->close();
} else {
echo 'failed, code:' . $res;
}
?>
Результатом выполнения данного примера будет что-то подобное:
Array ( [name] => foobar/baz [index] => 3 [crc] => 499465816 [size] => 27 [mtime] => 1123164748 [comp_size] => 24 [comp_method] => 8 )
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для сжатия и архивации
- Zip
- Функция ZipArchive::addEmptyDir() - Добавляет новую директорию
- Функция ZipArchive::addFile() - Добавляет в ZIP-архив файл по указанному пути
- Функция ZipArchive::addFromString() - Добавяет файл в ZIP-архив, используя его содержимое
- Функция ZipArchive::addGlob() - Add files from a directory by glob pattern
- Функция ZipArchive::addPattern() - Add files from a directory by PCRE pattern
- Функция ZipArchive::close() - Закрывает активный архив (открытый или вновь созданный)
- Функция ZipArchive::deleteIndex() - Удаляет элемент в архиве, используя его индекс
- Функция ZipArchive::deleteName() - Удаляет элемент в архиве, используя его имя
- Функция ZipArchive::extractTo() - Извлекает содержимое архива
- Функция ZipArchive::getArchiveComment() - Возвращает комментарий ZIP-архива
- Функция ZipArchive::getCommentIndex() - Возвращает комментарий элемента, используя его индекс
- Функция ZipArchive::getCommentName() - Возвращает комментарий элемента, используя его имя
- Функция ZipArchive::getExternalAttributesIndex() - Retrieve the external attributes of an entry defined by its index
- Функция ZipArchive::getExternalAttributesName() - Retrieve the external attributes of an entry defined by its name
- Функция ZipArchive::getFromIndex() - Возвращает содержимое элемента по его индексу
- Функция ZipArchive::getFromName() - Возвращает содержимое элемента по его имени
- Функция ZipArchive::getNameIndex() - Возвращает имя элемента по его индексу
- Функция ZipArchive::getStatusString() - Возвращают статус сообщения об ошибке, системный и/или zip-статус
- Функция ZipArchive::getStream() - Получить дескриптор файла элемента, определенный по имени элемента (только для чтения)
- Функция ZipArchive::locateName() - Возвращает индекс элемента в архиве
- Функция ZipArchive::open() - Открывает ZIP-архив
- Функция ZipArchive::renameIndex() - Переименовывает элемент по его индексу
- Функция ZipArchive::renameName() - Переименовывает элемент по его имени
- Функция ZipArchive::setArchiveComment() - Устанавливает комментарий к ZIP-архиву
- Функция ZipArchive::setCommentIndex() - Устанавливает комментарий к элементу по его индексу
- Функция ZipArchive::setCommentName() - Устанавливает комментарий к элементу, заданному по имени
- ZipArchive::setCompressionIndex
- ZipArchive::setCompressionName
- Функция ZipArchive::setExternalAttributesIndex() - Set the external attributes of an entry defined by its index
- Функция ZipArchive::setExternalAttributesName() - Set the external attributes of an entry defined by its name
- ZipArchive::setPassword
- Функция ZipArchive::statIndex() - Получение детальной информации о элементе по его индексу
- Функция ZipArchive::statName() - Получение детальной информации о элементе по его имени
- Функция ZipArchive::unchangeAll() - Отменяет все изменения, сделанные в архиве
- Функция ZipArchive::unchangeArchive() - Возвращает все глобальные изменения, сделанные в архиве
- Функция ZipArchive::unchangeIndex() - Отменяет все измения у позиции с заданным индексом
- Функция ZipArchive::unchangeName() - Отменяет все измения у позиции с заданным именем
Коментарии
The CRC returned from this method is a signed number and so can be negative. This isn't how most CRC's are represented and so can cause problems. Another thing to know is that the standerd CRC algorithm used for zip files is CRC32b.
So to put this together lets say that you wanted to extract the first file from a zip and then compare the original CRC with the CRC for the extracted file this is what you would need to do. (proper error checking is omitted for simplicity).
<?php
$zip = new ZipArchive();
$zip->open("myZip.zip");
$stat = $zip->statIndex( 0 );
$name = $stat['name'];
$oldCrc = $stat['crc'];
$zip->extractTo("myPath", $name);
$newCrc = hexdec(hash_file("crc32b", "myPath/" . $name));
// Have to test both cases as the unsigned CRC from within the zip might appear negative as a signed int.
if($newCrc !== $oldCrc && ($oldCrc + 4294967296) !== $newCrc) {
echo "The files don't match!";
}
?>
Note that the signed-integer CRC result is only true on 32-bit systems. 64-bit systems return correct CRCs.
A safer way (as recommended by crc32() function page) might be:
if ($file['crc'] < 0)
$file['crc'] = sprintf("%u",$file['crc']);