花了些时间写的函数,功能:
展开指定的文件夹,及内层的文件夹或不展开内层文件夹,返回指定后缀名的文件列表或者全部文件列表的数组
可以为多个后缀,返回类型为数组。
function check($file, $suffix="all", $deep=1)
{
/*
$file 为文件路径, $suffix 为文件后缀, $deep 为是否展开文件夹内的文件夹(1为是,0为否)
在$file中找符合$suffix的文件
如果$suffix="all",则为所有文件
多个后缀用","号分隔
*/
static $files = array();
$suffix_array = explode(",", $suffix);
if (is_dir($file)) {
$handle = opendir($file) or die (print "can not open $file");
while (false !== ($d_file = readdir($handle))) {
if ($d_file != "." && $d_file != "..") {
$d_file = "$file//" . $d_file; // 变为全路径
if ($deep>0) { // 如果$deep>0,则展开内层文件夹
if ($suffix == "all") { // 如果"all" 为所有后缀
check($d_file, $suffix, $deep);
} elseif (in_array(suffix($d_file), $suffix_array) or is_dir($d_file)) { // 指定后缀,或文件夹
check($d_file, $suffix, $deep);
}
} else { // 否则不展开内层文件夹,只返回当前文件夹文件列表数组
if ($suffix == "all") { // 同上
array_push($files, $d_file);
} elseif (in_array(suffix($d_file), $suffix_array)) { // 指定后缀文件
array_push($files, $d_file);
}
}
}
}
closedir($handle); // 关闭
} else {
array_push($files, $file); // 加入数组
}
return $files;
}