2013-03-21 49 views
1

我想通過使用glob來獲取我的目錄中的某些文件。PHP 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但不是其餘。我不確定我的模式有什麼問題。有人可以幫助我嗎?非常感謝!

+3

你的模式似乎是不匹配的開始。字母「te」和2位數字 - 它將如何匹配? – Adidi 2013-03-21 00:45:11

+0

@Adidi哈,你是對的。現在明白了!謝謝!〜 – FlyingCat 2013-03-21 00:46:51

回答

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

nope。還是行不通。 +1雖然。 – FlyingCat 2013-03-21 00:44:00

+0

原來我在te之前並不匹配。謝謝您的幫助! – FlyingCat 2013-03-21 00:47:17