利用opendir readdir 及递归的方法 获取目录下的全部文件内容 function fileList($dir, $level = 0) { $fpdir = opendir($dir); while($line = readdir($fpdir)) { if(strcmp($line, '.') == 0 || strcmp($line, '..') == 0 ) {continue;} $encode = mb_detect_encoding($line); echo str_pad('', $level*4, '-', STR_PAD_LEFT) . iconv($encode, "utf-8", $line),"<br />"; echo "\n"; if(substr($dir, -1) != '/') { $newDir = $dir . '/' . $line; } else { $newDir = $dir . $line; } if(is_dir($newDir)){ fileList($newDir, $level+1); } } closedir($fpdir); }
二、利用函数 glob 和递归的方法 获取php
function fileList($dir) { $dir = str_replace('\\', '/', $dir); //替换windows的默认斜线 if(substr($dir, -1) != '/') { //对路径进行补全 $dir .= '/*'; } else { $dir .= '*'; } $list = glob($dir . '*'); //获取目录下的全部文件 $len = count($list); for($i=0; $i<$len; $i++) { $encode = mb_detect_encoding($list[$i]); //获取当前子字符串的编码 echo iconv($encode, 'utf-8', $list[$i]),'<br>'; //将字符串的编码转化为 utf-8 if(is_dir($list[$i])) { fileList($list[$i]); } } }
这两种方法种都用到了函数 mb_dectect_encoding() 函数,这个是php的扩展mb_string,因此这个扩展必定要开启。windows