2016-07-16 99 views
0

我使用php ziparchive函數打開zip文件,並想列出位於zip文件中的文件夾的所有子文件夾。 例如... World.zip包含文件夾的國家,富&吧,我想列出該國文件夾的所有狀態文件夾的名稱,但不是富&酒吧如何列出zip文件中的文件夾的子文件夾而不提取?

+0

我試過$ zipFile->後的代碼locateName(倍ername)但沒有工作。 @Ares – Mihir

回答

0

的我發現這note上的手冊這是我得到的大部分代碼從 這取決於通過文件

總數循環和我重構它來滿足您的需求,這裏是重構

<?php 
$filePath = 'zip/file.zip'; 

$za = new ZipArchive(); 
if ($za->open($filePath) !== true) { // check for the zip archive 
    echo "archive doesn't exist or it's on Read-only mode "; 
} else { 

    $Tree = $pathArray = array(); //empty arrays 

    for ($i = 0; $i < $za->numFiles; $i++) { 

     $path = $za->getNameIndex($i); 
     $pathBySlash = array_values(explode('/', $path)); 
     $c = count($pathBySlash); 
     $temp = &$Tree; 
     for ($j = 0; $j < $c - 1; $j++) 
      if (isset($temp[$pathBySlash[$j]])) 
       $temp = &$temp[$pathBySlash[$j]]; 
      else { 
       $temp[$pathBySlash[$j]] = array(); 
       $temp = &$temp[$pathBySlash[$j]]; 
      } 
     if (substr($path, -1) == '/') 
      $temp[$pathBySlash[$c - 1]] = array(); 
     else 
      $temp[] = $pathBySlash[$c - 1]; 
    } 

    $array = $Tree['folder_name_to_list_its_files']; 

    // First style of Displaying 
    echo "<pre>"; 
    print_r($array); 

    // Second style of Displaying 
    foreach ($array as $key => $value) { 
     foreach ($value as $val) { 
      echo $key . " | " . $val . "<br /> \n"; 
     } 
    } 

    echo "</pre>"; 
} 
+0

列出所有文件? – Mihir

+0

列出所有文件夾和那些文件夾內的所有文件夾 –

+0

謝謝。你能否改變這個只列出特定文件夾中的所有子文件夾(僅限頂層)? – Mihir

相關問題