Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz meone #17484 üzenetére

    Igazából a feladat egyszerű, mint a lepkefing, pár perc alatt megoldható.
    Végigmész az adott könyvtár fájljain (az alapján, amit írtál, feltételezem, hogy egy helyre vannak ömlesztve, nem kell rekurzíve bejárni a könyvtárakat), reguláris kifejezéssel ellenőrzöd, hogy illeszkedik-e a fájlnév az általad megadott mintára, ha igen, akkor space mentén "szétrobbantod" a stringet, majd ebből kiszeded. Legalábbis ez egy nagyon gyorsan bepötyöghető megoldás. Szépségével nem foglalkoztam a kódnak, ez működik:

    $filename_pattern = '/^[a-z]+ \d+ \S+\.asd\.txt$/';
    $dir = '.';
    $filenames = scandir($dir);

    foreach($filenames as $filename) {
    if (!is_dir("$dir/$filename")) {
    if(preg_match($filename_pattern, $filename)) {
    $filename_pieces_by_space = explode(" ", $filename);
    $measurement_location = $filename_pieces_by_space[0];
    $measurement_id = $filename_pieces_by_space[1];

    echo $measurement_id, ': ', $measurement_location . PHP_EOL;
    }
    }
    }

    A reguláris kifejezés jelentése: a string eleje és vége között a következők vannak: bármilyen a és z közötti karakter egynél többször, szóköz, bármilyen szám egynél többször, szóköz, bármilyen nem whitespace karakter egynél többször, majd pont, "asd", pont, txt.
    Itt az explode eredményeként a harmadik elem a tömbben ilyen lesz, mint a "90n00004.asd.txt", ha ebből további infó kell, akkor nyilván pontok mentén kell szétrobbantani.

    (#17485) biker:
    Hát ennyi infóból ember legyen a talpán, aki megmondja, mi a baj. :)
    Azért remélem, azóta nem vágtál eret. :DDD

Új hozzászólás Aktív témák

Hirdetés