dstonek
dstonek

Reputation: 975

Glob pattern matching the first part of a file name

In a directory I have filenames like 123X1.jpg, 23X1.jpg, 23X2.jpg, 4123X1.jpg. I need the glob pattern to only get listed files starting with a required string.

For example:

'23X' -> 23X1.jpg, 23X2.jpg
'123X' -> 123X1.jpg

Last part part of the pattern is always an X. The first one is a number.

Upvotes: 6

Views: 9342

Answers (2)

Alix Axel
Alix Axel

Reputation: 154623

It's trivial with glob():

print_r(glob('/path/to/23X*.jpg'));
print_r(glob('/path/to/123X*.jpg'));

Upvotes: 9

Baba
Baba

Reputation: 95131

You can try RegexIterator

$fi = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS);
$regex = new RegexIterator($fi, "/\dX[a-z\d]+/i");

foreach($regex as $file) {
    echo (string) $file, PHP_EOL;
}

Upvotes: 1

Related Questions