获取包含数组中字符串的所有文件

时间:2015-07-14 18:44:57

标签: php arrays file

我正在尝试使用PHP来获取目录中与数组中任何字符串匹配的所有文件名的数组。

要搜索的字符串数组如下所示:

$users = array('user1', 'user2', 'user3');

我希望得到的是一个匹配任何这些字符串的文件列表,如下所示:

$files = array('user1_resume.pdf', 'user1_statement.pdf', 'user2_resume.pdf');

我应该如何在PHP中执行此操作?

2 个答案:

答案 0 :(得分:1)

使用函数glob。

$users = array('user1', 'user2', 'user3');
$searchString = implode(',',$users);
$result = glob('*{' . $searchString . '}*',GLOB_BRACE);
print_r($result);

http://php.net/manual/en/function.glob.php

从上面的来源引用:

GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c'

<强> [编辑]

如果文件名必须以用户列表中的内容开头,请删除上例中的第一个星号。

答案 1 :(得分:1)

试试这个。这不是最有效的解决方案,但很明显

$users = array('user1', 'user2', 'user3');
$files = array('user1_resume.pdf', 'user1_statement.pdf', 'user2_resume.pdf');


// to read from directory
//$files = scandir($dirName);



$resultFiles = array();
foreach($files as $file){
 foreach($users as $user){
    if(strpos($file,$user) !== null)
        $resultFiles[] = $file;
 }
}

echo "array:" .print_r( array_unique($resultFiles), true);