2013-11-26 19 views
0

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

/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' 
); 

我尝试使用​​3210功能如下,其可以匹配像62115465.jpg一些文件,但犯规拿起2个其他文件与-02-07标签

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

你有没有一个完整的脚本尝试删除'.'? –

+0

这应该为你排序,'$ files = glob('62115465 *。*');'它会匹配以数字开头的任何内容和任何外部内容。 – mic

回答

3
glob('62115465*'); 

注意去除.的。 glob()基本上是在命令提示符下执行诸如dir *.txt之类的操作。

+0

完美,谢谢:) –

0

你可以试试这个,

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

尝试像这个 -

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

或者这样:

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

我知道这个问题已经回答了,但对新手/中间编码器,或任何新来的水珠()功能(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; 
    } 
} 
?> 
相关问题