Ankündigung

Einklappen
Keine Ankündigung bisher.

Elemente aus erzeugtem Array aussortieren und weiter verarbeiten

Einklappen

Neue Werbung 2019

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

  • Elemente aus erzeugtem Array aussortieren und weiter verarbeiten

    Hallo zusammen!
    Stehe vor folgender Aufgabe:
    Ich habe von einem Verzeichnis ein Array erstellt, welches alle Ordner von diesem Verzeichnis enthält.
    Nun benötige ich aber nur die Elemente "test01" und "test02". Dabei ist jedoch zur Verallgemeinerung zu beachten, dass diese auch durchaus (je nach Fall) auch "test001" bzw. "test002" heißen könnten.
    --> Sprich ich sollte die Elemente allgemein "test*" aussortiert haben.
    Desweiteren enthalten diese "test*" - Ordner jeweils eine xml-Datei (gleichen Names) welche ich dann via DOM parsen will.

    Kann mir jemand helfen, speziell erstmal was das rausziehen der "test*" Elemente aus dem Array angeht?
    (Wichtig ist dabei einfach dass ich diese Ordner dann weiter auf die xml-Dateien untersuchen kann)

    Habe bereits alle gängigen Funktionen was das durchsuchen/analsysieren angeht durchprobiert inkl. opendir, readdir, glob.. bekomme dass aber nicht hin!

    Array
    (
    [0] => .
    [1] => ..
    [2] => .cvsignore
    [3] => conf
    [4] => doc
    [5] => lfi.sh
    [6] => population
    [7] => readme.txt
    [8] => test01
    [9] => test02
    )



    Bin über jede kleine Hilfe dankbar!
    Viele Grüße!

  • #2
    Um die passenden Elemente aus dem Array zu ziehen würde ich alle Elemente durchlaufen und per regulärem Ausdruck testen, ob der Verzeichnisinhalt mit "test" beginnt. Wenn ja, schreibst du diese Elemente in ein weiteres Array und bearbeitest sie im Anschluss oder du bearbeitest sie direkt nach dem Fund.

    Eine Funktion für die regulären Ausdrücke wäre PHP: preg_match - Manual

    Wenn du einen Ordner hast, kannst du seinen Inhalt auf die XML Datei überprüfen, falls vorhanden dann parsen.

    Kommentar


    • #3
      Zitat von bello_1234 Beitrag anzeigen
      Kann mir jemand helfen, speziell erstmal was das rausziehen der "test*" Elemente aus dem Array angeht?
      Schreib den Rest, den du nicht brauchst, gar nicht erst ins Array.

      Schau dir glob an.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        PHP-Code:
        foreach (glob("[test]*",GLOB_BRACE|GLOB_ERR) as $file) { 

        Kommentar


        • #5
          Cool danke für die Antworten, habs jetzt mit bissle "rumprobieren" und auf kleineren Umwegen hinbekommen:

          $dir = "path"; // Verzeichnis welches durchsucht werden soll
          $globdir = glob("$dir/test*", GLOB_ONLYDIR);
          while($verzeichnis = array_shift($globdir)){
          $verzeichnis = str_replace("$dir/","",$verzeichnis);
          echo "$verzeichnis". "\n";
          }

          Jetzt fehlt mir noch eine Kleinigkeit:
          Das Parsen der Dateien von den test* - Ordnern funktioniert schon alles, allerdings nur wenn ich jeweils den speziellen Pfad zur entsprechenden xml-Datei angebe:
          z.B.: $filename = "/home/test/test01/conf/filter.xml"

          Wie kann ich jetzt erreichen dass er hier jeweils automatisch den entsprechenden Pfad zu den gefundenen Test-Ordnern nimmt und für jedes das parsen durchführt?
          z.B. $filename = "/home/test/test*/conf/filter.xml"
          --> $filename = "/home/test/test01/conf/filter.xml"
          --> $filename = "/home/test/test02/conf/filter.xml"
          ... und basierend auf diesem Pfad das Parsen der xml-Dateien durchführen
          ... je nachdem weiviel test*-Ordner es halt gibt!
          (Hinweis: xml-file in jedem Test Ordner heißt gleich!)

          Grüße!

          Kommentar


          • #6
            Zitat von bello_1234 Beitrag anzeigen
            Wie kann ich jetzt erreichen dass er hier jeweils automatisch den entsprechenden Pfad zu den gefundenen Test-Ordnern nimmt und für jedes das parsen durchführt?
            Das musst du wohl selber programmieren, automatisch passiert eigentlich nie etwas. Sammle zuerst alle konkreten Fundstellen in einem Array, weiterverarbeitet wird dann im nachfolgenden Schritt.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Beim Posten bitte bbCode für Quellbeispiele verwenden und Code einrücken.
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                Zitat von lstegelitz Beitrag anzeigen
                Das musst du wohl selber programmieren, automatisch passiert eigentlich nie etwas. Sammle zuerst alle konkreten Fundstellen in einem Array, weiterverarbeitet wird dann im nachfolgenden Schritt.
                Informationen sind bereits in einem Array ($verzeichnis) gesammelt.
                Dennoch weiß ich nicht wie ich diese Informationen jetzt einzeln weiterverarbeite, indem ich sie in den jeweiligen Pfad einbinden muss, um diesen Pfad dann, in Verbindung mit dem jeweiligen xml-Dokument, als Quelle für das Parsen zu benutzen?!

                Noch einmal zur Übersicht:

                Ermittlung aller test* - Ordner und abspeichern in $verzeichnis. Zur Kontrolle am Ende nochmal eine Ausgabe:
                PHP-Code:
                $dir "path"
                $globdir glob("$dir/test*"GLOB_ONLYDIR);     
                while(
                $verzeichnis array_shift($globdir)){    
                $verzeichnis str_replace("$dir/","",$verzeichnis); 
                echo 
                "$verzeichnis""\n"

                Nun muss für jeden gefundenen "Test*" - Ordner, die jeweilige filter.xml - Datei geparst werden. Dazu muss ja der jeweilige Pfad als Quelle benutzt werden, um das DOM-Document zu laden.
                Beispiel für den gefundenen "test01" - Ordner wäre das hier:
                PHP-Code:
                $filename "/home/test/test01/conf/filter.xml";
                $document DOMDocument::load($filename); 
                Das anschließende Parsen ist kein Problem. Aber wie ist es jetzt möglich dass dies für alle gefundenen test*-Ordner (je nachdem wieviel es eben gibt), das Parsen ausgeführt wird?
                (Ein vorige Angabe aller Pfade würde ja vorraussetzen ich kenne bereits die Anzahl der Ordner, was allerdings nicht der Fall ist!)

                Kommentar


                • #9
                  Man per Schleife, machst Du doch oben auch. Irgendwas sagt mir, dass der bisherige Code nicht voin Dir ist.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Schritt 1: Sammle alle Verzeichnisse, die "test*" enthalten (ausgehend von einem Basisverzeichnis)
                    Schritt 2: Iteriere durch den gesamten, restlichen Verzeichnisbaum (pro gefundenem Verzeichnis aus Schritt 1) auf der Suche nach einer .xml Datei. Sammle die Pfade zu gefundenen .xml Dateien.
                    Schritt 3: Verarbeite alle gefundenen Dateien
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar

                    Lädt...
                    X