오늘 아침 지하철에서 파일과 폴더에 관한 장을 읽었습니다. 최근에 Linux 파일 시스템을 이해하고 파일 속성에 액세스하는 것이 Shell 명령과 매우 유사하다고 느꼈기 때문에 저녁에 연습하고 싶었습니다.
나는 PHP의 폴더 기능이 폴더의 모든 파일(하위 디렉토리의 파일 포함)에 대한 탐색을 제공하지 않는 것 같아서 직접 구현하고 싶었습니다.
글을 쓰면서 폴더 조작의 일부 기능이 생각했던 것과 다르다는 것을 발견했습니다. 예를 들어 dirname()은 제공된 전체 파일 경로를 기반으로 파일이 있는 폴더의 경로를 가져오지만 폴더를 전달하면 해당 상위 폴더를 가져옵니다. 이것을 이해해야합니다. basename()의 경우에도 마찬가지입니다. 폴더 경로를 전달하면 폴더 이름을 얻게 됩니다. 이 두 함수에서 반환된 결과는 '/'
<?php $dirPath='/home/WWW/Test';//目录,结尾不加'/‘ //执行遍历 recursion_readdir($dirPath); /** *@summary 重复times次字符char *@param $char 需要重复的字符 *@param $times 重复次数 *@return 返回重复字符组成的字符串 */ function forChar($char='-',$times=0){ $result=''; for($i=0;$i<$times;$i++){ $result.=$char; } return $result; } /** *@summary 递归读取目录 *@param $dirPath 目录 *@param $Deep=0 深度,用于缩进,无需手动设置 *@return 无 */ function recursion_readdir($dirPath,$Deep=0){ $resDir=opendir($dirPath); while($basename=readdir($resDir)){ //当前文件路径 $path=$dirPath.'/'.$basename; if(is_dir($path) AND $basename!='.' AND $basename!='..'){ //是目录,打印目录名,继续迭代 echo forChar('-',$Deep).$basename.'/<br/>'; $Deep++;//深度+1 recursion_readdir($path,$Deep); }else if(basename($path)!='.' AND basename($path)!='..'){ //不是文件夹,打印文件名 echo forChar('-',$Deep).basename($path).'<br/>'; } } closedir($resDir); }
로 끝나지 않습니다. 위의 PHP가 지정된 폴더의 파일을 재귀적으로 탐색하는 구현 방법은 모두 편집자가 공유한 내용이므로 참고가 되길 바라며, PHP 중국어 웹사이트에 많은 관심 부탁드립니다.
지정된 폴더에 있는 파일의 PHP 재귀 탐색을 구현하는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!