2016-07-16 6 views
0

저는 zip 파일을 여는 데 php ziparchive 함수를 사용하고 있으며 zip 파일에있는 폴더의 모든 하위 폴더를 나열하려고합니다. 예를 들어 는 ... World.zip 폴더 국가, foo는 & 줄을 포함하고 그 국가 폴더의 모든 상태 폴더의 이름을 나열 할 수 있지만 foo는 & 바추출하지 않고 zip 파일 내의 폴더 하위 폴더를 나열하는 방법은 무엇입니까?

+0

리팩토링 이후 locateName (fold ername)하지만 작동하지 않았습니다. @Ares – Mihir

답변

0

의 난 설명서에이 note 발견 이는 내가 파일

의 총 수를 통해 반복에 따라 에서 대부분의 코드를 가지고 그리고 난 당신의 요구를 일치하도록 리팩토링하고 여기에 코드를 내가 zipFile-> $을 시도

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