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

通过对以下值进行 OR 运算来指定标志,或对它们中的任何一个进行 OR 运算都为 0。

返回值

成功时返回条目的索引,失败时返回 false

示例

示例 #1 创建一个存档,然后使用 ZipArchive::locateName() 进行操作

<?php
$file
= 'testlocate.zip';

$zip = new ZipArchive;
if (
$zip->open($file, ZipArchive::CREATE) !== TRUE) {
exit(
'failed');
}

$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
"failed to write zip\n";
}
$zip->close();

if (
$zip->open($file) !== TRUE) {
exit(
'failed');
}

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
添加注释

用户贡献的注释 2 个注释

9
thedotwriter
11 年前
由于此页面上没有直接提供,因此以下是这两个标志的含义

ZIPARCHIVE::FL_NOCASE
忽略名称查找时的区分大小写

ZIPARCHIVE::FL_NODIR
忽略目录组件

所有定义的常量都可以在这里找到:https://php.net/manual/en/zip.constants.php
3
me at nowhere dot com
15 年前
如果使用了选项 ZIPARCHIVE::FL_NODIR,结果可能不明确,因为具有相同名称的文件可能出现在不同的目录中。在这种情况下,将返回索引中第一个名称匹配的条目。
例如

<?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) 返回 1
To Top