PHP glob模式问题

时间:2013-03-21 00:39:19

标签: php glob

我试图通过使用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而不是其余的{{1}}。我不确定我的啪啪声有什么问题。有人可以帮我吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

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;
  }
}