ZipArchive::locateName

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

ZipArchive::locateName β€” Returns the index of the entry in the archive

Опис

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

Locates an entry using its name.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ

name

The name of the entry to look up

flags

The flags are specified by ORing the following values, or 0 for none of them.

ЗначСння, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒΡΡ

Returns the index of the entry on success Π°Π±ΠΎ false Π² Ρ€Π°Π·Ρ– ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #1 Create an archive and then use it with 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
οΌ‹add a note

User Contributed Notes 2 notes

up
10
thedotwriter ΒΆ
13 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 ΒΆ
17 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