2016-12-06 2 views
0

ich mein Skript alle wollen setzen um die Dateien in einem Ordner, aber nicht um Ordner in dem Ordner, das ist der Code, den ich atm haben:Ordner Scan-Skript, um alle Dateien mit <files></files> umgeben wollen, aber nicht die Ordner

function listFolderFiles($dir){ 
$folder = scandir($dir); 
echo "<folder name='".$dir."'>"; 
foreach($folder as $file){ 
    if($file != '.' && $file != '..'){ 
     if(is_dir($dir.'/'.$file)) {    
      listFolderFiles($dir.'/'.$file);   
     } 
     else{ 
     echo '<file>'.$file.'</file>'; 
     } 
    } 
} 
echo "</folder>"; 
} 

ich möchte eine Ausgabe wie folgt aus:

<folder name='appdata'> 
    <folder name='appdata/assets'> 
     <files> 
      <file>New Text Document - Copy (2) - Copy.txt</file> 
      <file>New Text Document - Copy (2).txt</file> 
      <file>New Text Document - Copy.txt</file> 
      <file>New Text Document.txt</file> 
     </files> 
     <folder name='appdata/assets/audio'> 
      <folder name='appdata/assets/audio/frl'> 
       <files> 
        <file>New Microsoft Excel Worksheet - Copy (2).xlsx</file> 
        <file>New Microsoft Excel Worksheet - Copy - Copy.xlsx</file> 
        <file>New Microsoft Excel Worksheet - Copy.xlsx</file> 
        <file>New Microsoft Excel Worksheet.xlsx</file> 
       </files> 
      </folder> 
     </folder> 
    </folder> 
</folder> 

Vielen Dank im Voraus

+0

Ich habe es versucht und es sieht gut aus. Was ist das Problem? Was für einen Output bekommst du? – Seb

+0

Ich schlage vor, ein XML Api like, DOM zu verwenden, das es ermöglicht, die Knoten zu speichern und ihnen Daten hinzuzufügen. – ThW

+0

@Seb Ich möchte die Dateien mit umgeben sein Tags, atm sie nicht –

Antwort

0

die folgenden Versuchen. Es ist nur eine mögliche Lösung, aber Sie werden auch alle Ordner am Anfang bekommen:

function listFolderFiles($dir){ 
    $folder = scandir($dir); 
    echo "<folder name='".$dir."'>"; 
    $files = array(); 
    foreach($folder as $file){ 
     if($file != '.' && $file != '..'){ 
      if(is_dir($dir.'/'.$file)) {    
       listFolderFiles($dir.'/'.$file);   
      } 
     else{ 
      $files[] = $file; 
     } 
    } 
    if (!empty($files)) { 
     echo "<files>"; 
     foreach ($files as $_file) { 
      echo '<file>'.$_file.'</file>'; 
     } 
     echo "</files>"; 
    } 
} 
    echo "</folder>"; 
} 
+0

Die leeren $ Dateien foreach aus der ersten foreach bewegt, um richtig zu arbeiten, danke –

Verwandte Themen