PHP - 查找目录中与某些字符串匹配并放入数组的所有文件

时间:2013-11-26 14:09:52

标签: php arrays file

我在客户上传的服务器上有一个图像目录。我需要能够获取与某个字符串或项目代码匹配的所有文件,并将它们放在一个数组中。文件名和扩展名可以随时变化,但每个文件在文件名中始终都有8位数的项目代码。例如,在我的目录中说我有:

/images/

62115465.jpg
62115465-02.jpg
62115465-07.jpg
13452766.png
56773392.jpeg
56773392-avatar.jpg

我希望能够提取所有匹配8位数字项代码的文件,所以:

//all images that have 62115465 in the file name would give me

62115465.jpg
62115465-02.jpg
62115465-07.jpg

//or all images that have 56773392 in the file name would give me

56773392.jpeg
56773392-avatar.jpg

然后想要它们在这样的数组中:

$all_files = array(
  '62115465.jpg',
  '62115465-02.jpg',
  '62115465-07.jpg'
);

我尝试使用下面的glob()功能,该功能可以匹配某些文件,例如62115465.jpg,但不会使用-02-07标记来获取其他2个文件< / p>

$files = glob('62115465.'.*');

4 个答案:

答案 0 :(得分:3)

glob('62115465*');

请注意删除.。 glob()基本上复制了在命令提示符下执行dir *.txt之类的操作。

答案 1 :(得分:1)

我知道这个问题已经回答了,但对于新手/中间编码器,或者对glob()函数不熟悉的人( AHEM ME COUGH < / em>),目前还不清楚这里发生了什么。所以,这里是一个完整的脚本,我拼凑在一起做OP几乎要做的事情 - 在目录中搜索以目标前缀开头的所有文件并将它们添加到数组中。:

<?php
$imgs = array();
$dir =  $_SERVER['DOCUMENT_ROOT'].'/path/to/your/images';
$prefix = 'your-prefix_string-_-';
chdir($dir);
$matches = glob("$prefix*");
if(is_array($matches) && !empty($matches)){
    foreach($matches as $match){
        $imgs[] = $match;
    }
}
?>

答案 2 :(得分:0)

你能试试吗,

 $files = glob('62115465.*');

答案 3 :(得分:0)

试试这个 -

$files = glob("[^62115465]*.*);

或者像这样:

$files = glob("62115465*.*);