使用多个条件在PHP中进行目录搜索

时间:2013-01-09 17:35:42

标签: php search directory glob

我一直试图找到一种方法来搜索PHP中具有多个条件的目录,但运气不佳。

我有一个文件夹,其中包含同一文件的多个版本,但是使用不同的语言和不同的设备:

e.g。

 1. file_en_v980.jar

 2. file_fr_v980.jar

 3. file_en_v990.jar

 4. file_fr_v990.jar

我希望能够在目录中搜索v980的所有英文(en).jar文件。

我试过这个:

foreach(glob('./'.$installer_location.'/'.$brand_name.'/*en*.jar') as $filename){
    echo $filename."</br>";
}  

它可以工作,但也返回法语(fr)文件。

我试过这个:

foreach(glob('./'.$installer_location.'/'.$brand_name.'/*en,v980*.jar') as $filename){
    echo $filename."</br>";
} 

但它没有返回任何内容,所以我假设我的语法错误。

非常感谢任何帮助。

增加:

根据以下评论的建议,我尝试了这个:

foreach(glob('./'.$installer_location.'/'.$brand_name.'/*{en,v980}*.jar',GLOB_BRACE) as $filename){
    echo $filename."</br>";
} 

这会返回所有包含en,v980或两者的文件。我只需要弄清楚是否有办法说必须包含两者。

1 个答案:

答案 0 :(得分:0)

PHP的glob()实际上使用与unix shell相同的通配符/匹配引擎。对于您的版本,您正在搜索包含en,v980的文件,并且它不会被视为“更改”。 http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm

尝试

glob('..../*{en,v980}*.jar')

代替(注意{}