我一直试图找到一种方法来搜索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或两者的文件。我只需要弄清楚是否有办法说必须包含两者。
答案 0 :(得分:0)
PHP的glob()实际上使用与unix shell相同的通配符/匹配引擎。对于您的版本,您正在搜索包含en,v980
的文件,并且它不会被视为“更改”。 http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm
尝试
glob('..../*{en,v980}*.jar')
代替(注意{}
)