【问题标题】:PHP glob pattern issuePHP glob 模式问题
【发布时间】:2013-03-21 00:39:18
【问题描述】:

我正在尝试使用 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 而不是其余的。我不确定我的模式有什么问题。有人可以帮我吗?非常感谢!

【问题讨论】:

  • 您的模式似乎一开始就不匹配。字母“te”和 2 位数字 - 如何匹配?
  • @Adidi Ha,你是对的。现在明白了!谢谢!~

标签: php glob


【解决方案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;
  }
}

【讨论】:

  • 原来我没有匹配 te 之前的模式。感谢您的帮助!
猜你喜欢
  • 2011-04-18
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多