利用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