我正在尝试使用PHP来获取目录中与数组中任何字符串匹配的所有文件名的数组。
要搜索的字符串数组如下所示:
$users = array('user1', 'user2', 'user3');
我希望得到的是一个匹配任何这些字符串的文件列表,如下所示:
$files = array('user1_resume.pdf', 'user1_statement.pdf', 'user2_resume.pdf');
我应该如何在PHP中执行此操作?
答案 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);