• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ZipArchive::locateName()

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

    Returns the index of the entry in the archive

    说明

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

    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.

    范例

    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
    
    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
    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