CakeFest 2024: The Official CakePHP Conference

ZipArchive::locateName

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

ZipArchive::locateNameВозвращает индекс элемента в архиве

Описание

public ZipArchive::locateName(string $name, int $flags = 0): int|false

Находит элемент по имени.

Список параметров

name

Имя элемента для поиска.

flags

Флаги — значение, которое определили следующими константами через побитовое ИЛИ, или 0 ни для одного из них.

Возвращаемые значения

Метод возвращает индекс элемента в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Создать архив, а затем вызвать метод ZipArchive::locateName()

<?php

$file
= 'testlocate.zip';

$zip = new ZipArchive;
if (
$zip->open($file, ZipArchive::CREATE) !== TRUE) {
exit(
'Ошибка');
}

$zip->addFromString('entry1.txt', 'entry #1');
$zip->addFromString('entry2.txt', 'entry #2');
$zip->addFromString('dir/entry2d.txt', 'entry #2');

if (
$zip->status !== ZipArchive::ER_OK) {
echo
"Ошибка записи в zip-файл\n";
}
$zip->close();

if (
$zip->open($file) !== TRUE) {
exit(
'Ошибка');
}

echo
$zip->locateName('entry1.txt') . "\n";
echo
$zip->locateName('eNtry2.txt') . "\n";
echo
$zip->locateName('eNtry2.txt', ZipArchive::FL_NOCASE) . "\n";
echo
$zip->locateName('enTRy2d.txt', ZipArchive::FL_NOCASE|ZipArchive::FL_NODIR) . "\n";
$zip->close();

?>

Результат выполнения приведённого примера:

0

1
2
add a note

User Contributed Notes 2 notes

up
9
thedotwriter
11 years ago
As this is not directly available from this page, here's the meaning of the two flags:

ZIPARCHIVE::FL_NOCASE
Ignore case on name lookup

ZIPARCHIVE::FL_NODIR
Ignore directory component

All defined constants can be found here : http://php.net/manual/en/zip.constants.php
up
3
me at nowhere dot com
15 years ago
If the option ZIPARCHIVE::FL_NODIR is used, the result may be ambiguous as files with the same name may occur in various directories. In this case, the first occurence in the index whoose name matches is returned.
E.g.

<?php
$zip
->addFromString('afile.txt', 'index 0');
$zip->addFromString('double.txt', 'index 1');
$zip->addFromString('dir/double.txt', 'index 2');
?>

$zip->locateName('double.txt',ZIPARCHIVE::FL_NODIR) returns 1
To Top