2016-07-16 79 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

相关问题