问题描述
我正在使用以下函数在给定文件夹和所有子文件夹中查找具有特定文件扩展名的文件:
function FindVideoFiles($startfolder,$specificextensions){
$it = new RecursiveDirectoryIterator($startfolder);
foreach( new RecursiveIteratorIterator($it) as $file) {
if (in_array(strtoupper(substr($file,strrpos($file,'.') + 1)),$specificextensions)) {
$files[]=array('nomedapasta'=>pathinfo($file,PATHINFO_DIRNAME));
}
}
return $files;
}
$specificextensions
是一个以 avi
、mkv
和 mp4
作为值的数组。
$startfolder
是一个以 /mnt/HD1_4TB/refazer/A View to a Kill
为值的字符串。
当我尝试运行该函数时,它向我抛出一个错误消息:
Failed to open dir: No such file or directory.
最奇怪的是,如果我将 $starfolder
变量更改为 /mnt/HD1_4TB/refazer
,该函数将起作用并返回文件夹“A View to a Kill”中的文件(即使文件夹名称中有空格) .
如果我将文件夹“A View to a Kill”重命名为“AViewtoaKill”并将 $startfolder
变量更改为 /mnt/HD1_4TB/refazer/AViewtoaKill
,该函数也可以工作.....
所以..... 我认为我的问题是文件夹名称中的空格。
有人可以帮助我解决这个问题,而不删除文件夹名称中的空格吗?
谢谢
解决方法
使用 Explode 和 Implode 功能进行成功搜索,例如从目录中获取文件夹名称并从其名称中删除所有空格并进行比较,在后端使用文件夹名称没有空格。试试这个。
$fileNameWithSpace = "A View to a Kill";
$fileWithoutSpace = (explode(" ",$fileNameWithSpace ));
echo implode("",$strWithoutSpace); //AViewtoaKill