матч на PHP шаблон Глоб для arbitray количество цифр
можно ли сопоставить произвольное количество цифр с функцией PHP glob? Я пытаюсь сопоставить имена файлов для миниатюр изображения с размерами от двух до четырех цифр.
Я знаю, что могу предоставить диапазон цифр, но это соответствует только одному символу:
glob("thumbname-[0-9]-[0-9].jpg")
Это будет соответствовать thumbname-1-1.jpg, но не thumbname-10-10.jpg, etc.
3 ответов
альтернатива 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]