文字

ZipArchive::locateName

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

ZipArchive::locateNameReturns the index of the entry in the archive

说明

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

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.

  • ZipArchive::FL_NOCASE

  • ZipArchive::FL_NODIR

返回值

Returns the index of the entry on success 或者在失败时返回 FALSE .

范例

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

?>

以上例程会输出:

01
2

用户评论:

[#1] thedotwriter [2012-09-25 08:22:42]

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

[#2] me at nowhere dot com [2008-09-03 01:04:32]

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

上一篇: 下一篇: