php glob number range in filename

a 夏天 提交于 2019-12-22 22:47:27

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!