2014-10-07 68 views
0

我使用這個功能來查找文件夾和子文件夾中的所有圖片:RecursiveIterator返回數組文件擴展

function rsearch($folder, $pattern) { 
    $dir = new RecursiveDirectoryIterator($folder); 
    $ite = new RecursiveIteratorIterator($dir); 
    $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH); 
    $fileList = array(); 
    foreach($files as $file) { 
     $fileList = array_merge($fileList, $file); 
    } 
    return $fileList; 
} 
$list_of_file=rsearch($data_directory,'/^.+\.(jpg|jpeg|png|gif|tiff)$/i'); 
echo 'longueur '.count($list_of_file); 
print_r($list_of_file); 

而這裏的結果:

Array 
(
    [0] => file-user/rep/username/images\asura.jpg 
    [1] => jpg 
    [2] => file-user/rep/username/images\beyourself.jpg 
    [3] => jpg 
    [4] => file-user/rep/username/images\subfolder\logo3.png 
    [5] => png 
    [6] => file-user/rep/username/images\gmail.gif 
    [7] => gif 
) 

1)如何我將文件名前的\更改爲/

2)爲什麼數組僅在文件本身之後返回擴展名?如何預防它?

回答

1

嘗試var_dump $文件,你會看到。如果你不想把$文件陣列的兩個元素到$的fileList然後不使用array_merge簡單地做:

foreach($files as $file) { 
     $fileList[] = $file[0]; 
    } 

而對於相當粗糙,並準備修復到\做str_replace函數或類似。例如:

foreach($files as $file) { 
     $fileList[] = str_replace('/','\\',$file[0]); 
    } 
+0

謝謝,這是完美的。 – Core972 2014-10-07 14:46:18