матч на PHP шаблон Глоб для arbitray количество цифр

можно ли сопоставить произвольное количество цифр с функцией PHP glob? Я пытаюсь сопоставить имена файлов для миниатюр изображения с размерами от двух до четырех цифр.

Я знаю, что могу предоставить диапазон цифр, но это соответствует только одному символу:

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

Это будет соответствовать thumbname-1-1.jpg, но не thumbname-10-10.jpg, etc.

3 ответов


попробуйте использовать: glob("thumbname-[0-9]*-[0-9]*.jpg")

Я сделала тест и он работает для меня.


альтернатива glob (), используя recursiveDirectoryIterator с регулярным выражением

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

вы можете разделить числа на различные массивы глобусов и объединить их.

например, сначала вы берете все изображения из 0-9 в один массив:

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

после этого вы создаете другой массив, который содержит числа от 10-99:

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

теперь вы объединяете эти 2 массива в один и получаете все от 0-99:

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

вы можете расширить его столько, сколько хотите, просто добавьте [0-9]