我在服务器上有一个客户上传的图像目录。我需要能够获得与某个字符串或项代码匹配的所有文件,并将它们放入数组中。文件名和扩展名总是可以变化的,但每个文件的文件名中总是有一个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
标签的文件
$files = glob('62115465.'.*');
glob('62115465*');
注意CCD_ 5的移除。glob()本质上复制了在命令提示符下执行类似dir *.txt
的操作。
我知道这个问题已经得到了回答,但对于新手/中级程序员,或者任何新使用glob()函数的人(AHEMMECOUGH)来说,这里发生了什么还不清楚。因此,这里有一个完整的脚本,我拼凑在一起做了与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;
}
}
?>
你能试试这个吗,
$files = glob('62115465.*');
这样尝试-
$files = glob("[^62115465]*.*);
或者像这样:
$files = glob("62115465*.*);