• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Alle XML-Dateien eines Verzeichnisses geordnet einlesen

blabla333

Mitglied
Ich muss alle XML-Dateien eines Verzeichnisses einlesen, um die Daten in eine SQL-DB zu bekommen. Dabei sind die XML-Dateien mit aufsteigender Zahlenfolge benannt. Wichtig ist dabei, dass die Reihenfolge beachtet wird.
abc-234.xml wird vor qwe-235.xml eingelesen. Diese Reihenfolge bereitet mir derzeit Probleme. Wie lese ich also Dateien eines Ordners in einer vorgegebenen Reihenfolge ein?

Mein Code sieht bislang so aus:

Code:
if ($handle = opendir('/ordner')) {
    while (false !== ($xml_datei = readdir($handle))) {
        if ($xml_datei != "." && $xml_datei != "..") {
            if (@file_exists($xml_datei)!=false) { 
                $xml_object = simplexml_load_file($xml_datei); 
                if(is_object($xml_object->eintrag)==true){ 
                    foreach($xml_object->eintrag as $key =>$value){ 
                        echo '<b>'.$value->stichwort.'</b><br>'; 
                        echo $value->eintragstext.'<br>'; 
                    } 
                } 
            } else { exit('Konnte '.$xml_datei.' nicht öffnen.'); } 
        }
    }
    closedir($handle);
}
 
Zuletzt bearbeitet:
Zum Beispiel so:

PHP:
<?php

$xmlDir = __DIR__;

$files = glob($xmlDir . '/*.xml');

$f = function ($path) {
    $matches = array();

    preg_match(
        '/([0-9]+)$/',
        pathinfo($path, PATHINFO_FILENAME),
        $matches
    );

    return $matches[1];
};

usort($files, function ($a, $b) use ($f) {
    return $f($a) - $f($b);
});

foreach ($files as $file) {
    // Do whatever
    echo $file, "\n";
}
 
Zurück
Oben