PHP全局模式问题


PHP glob pattern issue

我试图通过使用glob在我的目录中获得某些文件。

我的模式就像

foreach(glob($root . "../test/te[0-9]{2}.xml") as $filename){
  echo $filename;
}

文件是

0051_001.xml
0071_001_as01.xml
0485_001_te01.xml
0485_001_te02.xml
0485_001_teh03.xml

它不输出任何内容。

我只需要teh01te03.xml,而不是其他的。我不确定我的模式出了什么问题。有人能帮我一下吗?非常感谢!

glob不支持[0-9]{2},你必须写[0-9][0-9]:

foreach(glob($root . "../test/te[0-9][0-9].xml") as $filename){
  echo $filename;
}
对于你的文件,你需要使用:
foreach(glob($root . "../test/[0-9][0-9][0-9][0-9]_[0-9][0-9][0-9]_te[0-9][0-9].xml") as $filename){
  echo $filename;
}

或者你可以添加一个正则表达式检查:

foreach(glob($root . "../test/*.xml") as $filename){
  if (preg_match('/_te'd{2}'.xml$/', $filename, $matches)){
     echo $filename;
  }
}