php[world] 2015 Schedule Announced

ZipArchive::locateName

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

ZipArchive::locateNameGibt den Index eines Archiveintrags zurück

Beschreibung

int ZipArchive::locateName ( string $name [, int $flags ] )

Lokalisiert einen Eintrag unter Verwendung seines Namens.

Parameter-Liste

name

Der Name des Eintrags, nach dem gesucht werden soll.

flags

Die Funktion gibt den Index der Datei namens fname im Archiv zurück. Die Flags können miteinander kombiniert werden, soll keines davon genutzt werden, sollte 0 verwendet werden.

  • ZipArchive::FL_NOCASE

  • ZipArchive::FL_NODIR

Rückgabewerte

Gibt im Erfolgsfall den Index eines Eintrags zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 Ein Archiv erstellen und es mit locateName verwenden

<?php
$file 
'testlocate.zip';

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

$zip->addFromString('eintrag1.txt''Eintrag #1');
$zip->addFromString('eintrag2.txt''Eintrag #2');
$zip->addFromString('dir/eintrag2d.txt''Eintrag #2');

if (!
$zip->status == ZipArchive::ER_OK) {
    echo 
"Fehler beim Schreiben des ZIP\n";
}
$zip->close();

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

echo 
$zip->locateName('eintrag1.txt') . "\n";
echo 
$zip->locateName('eiNtrag2.txt') . "\n";
echo 
$zip->locateName('eiNtrag2.txt'ZipArchive::FL_NOCASE) . "\n";
echo 
$zip->locateName('einTRag2d.txt'ZipArchive::FL_NOCASE|ZipArchive::FL_NODIR) . "\n";
$zip->close();

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

0

1
2
add a note add a note

User Contributed Notes 2 notes

up
4
thedotwriter
2 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
1
me at nowhere dot com
6 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