php glob模式匹配任意位数

时间:2013-01-24 16:49:16

标签: php glob

是否可以使用php glob函数匹配任意数量的数字?我正在尝试匹配图像缩略图的文件名,最终尺寸从2到4位。

我知道我可以提供一个数字范围,但这只匹配一个字符:

glob("thumbname-[0-9]-[0-9].jpg")

这将匹配thumbname-1-1.jpg但不匹配thumbname-10-10.jpg等。

3 个答案:

答案 0 :(得分:5)

尝试使用:glob("thumbname-[0-9]*-[0-9]*.jpg")

我做了一个测试,它对我有用。

答案 1 :(得分:4)

使用recursiveDirectoryIterator和regexp

替代glob()
$Directory = new RecursiveDirectoryIterator('path/to/project/');
$Iterator = new RecursiveIteratorIterator($Directory);
$Regex = new RegexIterator($Iterator,
    '/^thumbname-[0-9]*-[0-9]*\.jpg$/i', 
    RecursiveRegexIterator::GET_MATCH
);

答案 2 :(得分:0)

您可以将数字拆分为不同的glob数组并合并它们。

例如,首先将0-9中的所有图像合并为一个数组:

$g1 =  glob('thumbname-[0-9].jpg');

之后,您创建另一个数组,其中包含10 - 99的数字:

$g2 =  glob('thumbname-[0-9][0-9].jpg');

现在将这两个数组合并为一个,并从0-99获取所有数据:

$gResult = array_merge($g1, $g2);

您可以根据需要添加[0-9]