问题
I've checked two other answers but can't seem to match a range of numbers in file name
I need to match 1.jpg to anything upto 99.jpg (no leading zeros and no prefix or suffix), just plain digits.jpg
glob("$dir/{1..99}.jpg", GLOB_BRACE);
and I've also tried:
glob("$dir/{" . implode(",", range(1, 99)) . "}.jpg", GLOB_BRACE);
The following matches only 1.jpg to 9.jpg but not 10,11 etc
glob("$dir/[0-9].jpg", GLOB_BRACE);
The following matches nothing:
glob("$dir/[0-9]+.jpg", GLOB_BRACE);
I've already checked solutions in PHP glob range small issue why? and php glob pattern match for arbitray number of digits
回答1:
Try this:
glob("$dir/{,[1-9]}[0-9].jpg", GLOB_BRACE);
The GLOB_BRACE
option tells it to recognize alternatives in braces, so {,[1-9]}
matches either an empty string or a non-zero digit. Then this is followed by any digit. So with the empty string it matches 0
through 9
, and with the non-zero digit it matches 10
through 99
.
来源:https://stackoverflow.com/questions/35779114/php-glob-number-range-in-filename