2024 年日本 PHP 研討會

ZipArchive::locateName

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

ZipArchive::locateName傳回項目在壓縮檔中的索引

說明

公開 ZipArchive::locateName(字串 $name, 整數 $flags = 0): 整數|false

使用名稱尋找項目。

參數

name

要查找的項目名稱

flags

標記是透過 OR 運算以下值來指定,或設為 0 表示無標記。

回傳值

成功時回傳項目的索引,失敗時回傳 false

範例

範例 #1 建立一個壓縮檔,然後使用 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
新增註釋

使用者貢獻的註釋 2 則註釋

thedotwriter
12 年前
由於這不在此頁面中直接提供,以下是兩個旗標的意義

ZIPARCHIVE::FL_NOCASE
名稱搜尋時忽略大小寫

ZIPARCHIVE::FL_NODIR
忽略目錄組成

所有已定義的常數都可以在這裡找到:https://php.dev.org.tw/manual/en/zip.constants.php
me at nowhere dot com
16 年前
如果使用 ZIPARCHIVE::FL_NODIR 選項,結果可能會模稜兩可,因為同名的檔案可能會出現在不同的目錄中。在這種情況下,會返回索引中第一個名稱相符的項目。
例如:

<?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) 會返回 1
To Top