是否可以使用php glob函数匹配任意数量的数字?我正在尝试匹配图像缩略图的文件名,最终尺寸从2到4位。
我知道我可以提供一个数字范围,但这只匹配一个字符:
glob("thumbname-[0-9]-[0-9].jpg")
这将匹配thumbname-1-1.jpg但不匹配thumbname-10-10.jpg等。
答案 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]