您可以使用以下代碼來讀取zip文件內的目錄:
$zip = new ZipArchive;
if ($zip->open('file.zip') === TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
if (substr($filename, -1) == '/') {
echo $filename . "\n";
}
}
$zip->close();
}
在上面的示例中,我們首先創建一個ZipArchive對象,然后打開zip文件。使用getNameIndex()
方法可以獲取zip文件內每個文件的名稱,然后我們檢查文件名的最后一個字符是否為'/'
,如果是的話,說明該文件是一個目錄。我們將目錄名稱打印出來。
請注意,上述代碼只能讀取zip文件內的目錄,無法讀取目錄內的文件。如果您需要讀取目錄內的文件,請參考以下代碼:
$zip = new ZipArchive;
if ($zip->open('file.zip') === TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
if (substr($filename, -1) != '/') {
$dirname = dirname($filename);
if (!in_array($dirname, $directories)) {
$directories[] = $dirname;
echo $dirname . "\n";
}
}
}
$zip->close();
}
在上面的代碼中,我們使用dirname()
函數獲取文件的目錄名稱,并使用一個數組$directories
來存儲已讀取的目錄名稱,以避免重復輸出。