opendir() und mehrere verzeichnisebenen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • opendir() und mehrere verzeichnisebenen

    hallo,

    folgende konstellation: mehrere verzeichnisse, jeweils mit einigen unterverzeichnissen. in diesen unterverzeichnissen befinden sich einige textdateien, die ich auslesen möchte. leider klappt das mit folgendem script nicht, es wird nichts angezeigt!


    PHP-Code:

    <?php
    // Verzeichnisebene 1
    $handle opendir('.');
    while (
    false !== ($verzeichnis1 readdir ($handle))) {    
        if(
    is_dir($verzeichnis1) && $verzeichnis1 != ".." && $verzeichnis1 != "."){
            
    // Verzeichnisebene 2
            
    $handle2 opendir("./$verzeichnis1/");
            while(
    false !== ($verzeichnis2 readdir($handle2))){
                if(
    is_dir($verzeichnis2) && $verzeichnis2 != ".." && $verzeichnis2 != "."){                
                    
    // Dateiebene
                    
    $handle3 opendir("./$verzeichnis1/$verzeichnis2/");
                    while(
    false !== ($datei readdir($handle3))){
                        if(
    $datei != "." && $datei != ".."){
                            echo 
    $datei."<br>";
                        }
                    }
                    
    closedir($handle3);
                }            
            }
            
    closedir($handle2);
        }
    }
    closedir($handle);
    ?>

    weiis einer von euch woran das liegen könnte?

  • #2
    weiis einer von euch woran das liegen könnte?
    ja

    also zuerst mal das lesen
    ganz besonders den Teil:
    Ist filename ein relativer Dateiname, so wird er auch relativ zu dem aktuellen Verzeichnis geprüft.
    Das aktuelle Verzeichnis ist das Verzeichnis, in dem der script ausgeführt wird.
    wenn du also das machst :
    PHP-Code:
    $handle2 opendir("./$verzeichnis1/");
    $verzeichnis2 readdir($handle2);
    if(
    is_dir($verzeichnis2) && $verzeichnis2 != ".." && $verzeichnis2 != "."
    welches Verzeichnis prüft dann das is_dir()?

    Kommentar


    • #3
      Du meinst in der klammer von readdir müsste ein verzeichnisname stehen? ich glaube bei der variablen $verzeichnis2 handelt es sich schon um einen verzeichnis-/dateiname, schliesslich ermitteld readdir() ja den nächsten Datei-/Verzeichnisnamen.

      Kommentar


      • #4
        nein readdir ist richtig es geht um is_dir(). Wenn du /foo/bar/<deine dateien> hast, enthält die varable $verzeichnis2 in deinem script den wert 'bar'.
        is_dir('bar') prüft ob /bar ein verzeichnis ist (nicht ob /foo/bar ein verzeichnis ist) und ergibt false

        Kommentar


        • #5
          Also .. vom Prinzip her ist das ja eine/wenn nicht die Rekursions Aufgabe ... mal ein anderer Denkansatz:
          PHP-Code:
          function readDirectory($dir ".") {
              
          $result = array();
              if ( 
          $d openDir($dir) ) {
                  while ( 
          $f readDir($d) ) {
                      if ( !
          preg_match("/^\.|\.\.$/"$f) ) {
                          if ( 
          is_dir($f) ) $result[$f] = readDirectory("{$dir}/{$f}");
                          else 
          $result[$f] = filesize("{$dir}/{$f}");
                      }
                  }
                  
          closeDir($d);
              }
              return 
          $result;

          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar

          Lädt...
          X