2016-03-03 4 views
1

Я никогда проверил две другие ответы, но не могу показаться, чтобы соответствовать диапазон номеров в имени файлаPHP диапазон номеров Глоб в имени файла

Мне нужно, чтобы соответствовать 1.jpg ни к чему ДО 99.jpg (не ведущий нули и без префикса или суффикса), просто digits.jpg

glob("$dir/{1..99}.jpg", GLOB_BRACE); 

, и я также попробовал:

glob("$dir/{" . implode(",", range(1, 99)) . "}.jpg", GLOB_BRACE); 

следующие матчи только 1.jpg к 9.jpg но не 10,11 и т.д.

glob("$dir/[0-9].jpg", GLOB_BRACE); 

Следующие матчи ничего:

glob("$dir/[0-9]+.jpg", GLOB_BRACE); 

Я уже проверил решения в PHP glob range small issue why? и php glob pattern match for arbitray number of digits

+0

'glob (" $ dir/[0-99] .jpg ", GLOB_BRACE);' – Mihai

+0

и что-то вроде '[0-9] [0-9] +. Jpg'? (* мое регулярное выражение довольно ржавое *) Вам нужно добавить еще одно условие. Затем этот ответ http://stackoverflow.com/a/33628481/ находится в одном из этих ссылок 'glob (" $ dirname/* {". $ Start. '..'. $ End."} .jpg ", GLOB_BRACE); 'почему бы это не сработать? или 'glob (" $ dirname/* 0 {". implode (", ", range ($ start, $ end))."} .jpg ", GLOB_BRACE);' Я не вижу, как это может потерпеть неудачу. –

+0

@Mihai '[0-99]' не работает – Onimusha

ответ

2

Попробуйте это:

glob("$dir/{,[1-9]}[0-9].jpg", GLOB_BRACE); 

Опция GLOB_BRACE рассказывает признать альтернативы в фигурных скобках, поэтому {,[1-9]} соответствует пустой строке или ненулевой цифрой. Затем за ней следует любая цифра. Таким образом, пустая строка соответствует 0 по 9, а с ненулевой цифрой соответствует 10 по 99.

+0

Один из лучших ответов Sir :-) –

+0

Perfect .. мгновенно найден 1,2,3,4 и 12.jpg ... Большое спасибо – Onimusha

Смежные вопросы