Php 匹配文件名第一部分的全局模式

Php 匹配文件名第一部分的全局模式,php,glob,Php,Glob,在一个目录中,我有像123X1.jpg、23X1.jpg、23X2.jpg、4123X1.jpg这样的文件名。 我需要glob模式只获取以所需字符串开头的列出的文件 例如: '23X' -> 23X1.jpg, 23X2.jpg '123X' -> 123X1.jpg 模式的最后一部分始终是X。第一部分是数字。您可以尝试RegexIterator $fi = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS)

在一个目录中,我有像123X1.jpg、23X1.jpg、23X2.jpg、4123X1.jpg这样的文件名。 我需要glob模式只获取以所需字符串开头的列出的文件

例如:

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

模式的最后一部分始终是X。第一部分是数字。

您可以尝试
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;
}

使用
glob()


@dstonek:是的,
glob
功能强大,甚至可以让您执行
glob('/*/*/123X*.jpg')
,但它当然要慢得多。
print_r(glob('/path/to/23X*.jpg'));
print_r(glob('/path/to/123X*.jpg'));