PHP 8.4.2 Released!

ZipArchive::locateName

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

ZipArchive::locateNameDevuelve el índice de la entrada en el archivo

Descripción

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

Localiza una entrada utilizando su nombre.

Parámetros

name

El nombre de la entrada a buscar

flags

Los indicadores son especificados agregándoles OR a los siguientes valores, ó 0 para ninguno de ellos.

Valores devueltos

Devuelve el índice de la entrada en caso de tener éxito, o false en caso de error.

Ejemplos

Ejemplo #1 Crear un archivo y luego utilizarlo con ZipArchive::locateName()

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

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

$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
"falló al escribir en el archivo zip\n";
}
$zip->close();

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

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();

?>

El resultado del ejemplo sería:

El ejemplo de arriba mostrará la salida:

0

1
2
add a note

User Contributed Notes 2 notes

up
9
thedotwriter
12 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
16 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