Search code examples
phpglob

help with glob pattern


It would be nice if someone could give me a regexp pattern for glob for getting below filenames:

1.jpg // this file
1_thumb.jpg
2.png // this file
2_thumb.png
etc...

returning the files without "_thumb". I have this pattern:

$numericalFiles = glob("$this->path/*_thumb.*");

and that give me all with "_thumb."


Solution

  • glob() isn't the greatest at handling situations where you have complex requirements for file matching, as you've clearly noticed. I'd recommend using PHP's SPL library and taking advantage of the DirectoryIterator class.

    $iterator = new DirectoryIterator("/dir/path");
    foreach ($iterator as $file) {
        if ($file->isFile() && preg_match("/^[0-9]+\./i",$file->getFilename())) {
            echo $file->getFilename();
        }
    }
    

    You can modify your criteria cleanly during the iteration (also, it's easy to modify the iterator if you ever needed recursive directory iteration).