我使用这个函数查找文件夹和子文件夹中的所有图片:
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)为什么数组在文件本身之后返回扩展名?如何预防?
发布于 2014-10-07 14:09:12
尝试var_dump $files,您就会看到。如果不想将$file数组的两个元素都放入$fileList中,那么就不要使用array_merge了:
foreach($files as $file) {
$fileList[] = $file[0];
}对于对\做一个str_replace或类似的非常粗糙和现成的修复。类似于:
foreach($files as $file) {
$fileList[] = str_replace('/','\\',$file[0]);
}https://stackoverflow.com/questions/26237717
复制相似问题