我很抱歉,如果这个问题对于忍者来说是显而易见的,但我是PHP的新手,我整天都在苦苦挣扎......
我正在尝试从文件夹结构中获取所有文件的列表。
目前它给了我类似的东西
数组([0] - >路径/文件名[1] - >路径/文件名)数组([0] - >路径/文件名[1] - >路径/文件名..)
(每个文件夹一个)
function o99_list_all_files_in_dir($dir) //need to ocheck for server compatibility (unix,linux,win)
{
$root = scandir($dir);
foreach($root as $value)
{
if($value === '.' || $value === '..') {continue;}
if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;}
//if(is_file("$dir/$value")) {$result["$dir"]="$value";continue;}
foreach(k99_list_all_files_in_dir("$dir/$value") as $value)
{
$result[]=$value;
//$result["$dir"]=$value;
}
}
//print_r($result);
return $result;
}
几个问题:
1 - 我需要路径和文件名对,所以我想要得到一个像这样的数组:
results([path] - > [filename] [anotherpath] - > [anotherfilename])。
但如果我尝试构造另一个数组(切换取消注释和注释行),该函数将只给我每个目录中的第一个文件。
2 - 稍后,我正在使用此功能,以便将路径和文件名分开,所以我尝试了这个:
$result = o99_list_all_files_in_dir($upload_dir);
foreach ($result as $image) {
reset($image);
while (list($key, $val) = each($image)) {
// echo "$key => $val\n";
}
$filename = pathinfo($image);// I need the path here ...
...
......但显然它不起作用(否则我不会在这里:-)
3 - 奖金问题:如何从结果中过滤文件(例如thumbs.db)或决定如何忽略或不忽略某些扩展?
编辑我 4 - !important(之前忘了) - 在处理unknows服务器路径(Linux,Win,Unix)时我需要注意什么...这个功能是否适用于所有人?
答案 0 :(得分:1)
试试这段代码:
function scanFileNameRecursivly($path = '', &$name = array() )
{
$path = $path == ''? dirname(__FILE__) : $path;
$lists = @scandir($path);
if(!empty($lists))
{
foreach($lists as $f)
{
if(is_dir($path.DIRECTORY_SEPARATOR.$f) && $f != ".." && $f != ".")
{
scanFileNameRecursivly($path.DIRECTORY_SEPARATOR.$f, &$name);
}
else
{
$name[] = $path.DIRECTORY_SEPARATOR.$f;
}
}
}
return $name;
}
$path = "abs path to your directory";
$file_names = scanFileNameRecursivly($path);
echo "<pre>";
var_dump($file_names);
echo "</pre>";