我在客户上传的服务器上有一个图像目录。我需要能够获取与某个字符串或项目代码匹配的所有文件,并将它们放在一个数组中。文件名和扩展名可以随时变化,但每个文件在文件名中始终都有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.'.*');
答案 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*.*);