0

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

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

例如

 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 或两者的文件。我只需要弄清楚是否有办法说必须同时包含两者。

4

1 回答 1

0

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

尝试

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

相反(注意{}

于 2013-01-09T17:53:32.193 回答