Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie PHP, um Dateien in einem bestimmten Ordner rekursiv zu durchlaufen

So implementieren Sie PHP, um Dateien in einem bestimmten Ordner rekursiv zu durchlaufen

高洛峰
高洛峰Original
2017-01-14 13:15:321672Durchsuche

Ich habe heute Morgen ein Kapitel über Dateien und Ordner in der U-Bahn gelesen. Ich habe erst kürzlich das Linux-Dateisystem verstanden und hatte das Gefühl, dass der Zugriff auf Dateiattribute Shell-Befehlen sehr ähnlich ist, also wollte ich es am Abend üben.

Ich habe festgestellt, dass die Ordnerfunktion von PHP offenbar nicht das Durchsuchen aller Dateien in einem Ordner (einschließlich Dateien in Unterverzeichnissen) ermöglicht, daher wollte ich selbst eine implementieren.

Beim Schreiben stellte ich fest, dass einige Funktionen zum Bedienen von Ordnern nicht meinen Vorstellungen entsprachen. Beispielsweise ruft dirname() den Pfad zu dem Ordner ab, in dem sich die Datei befindet, basierend auf dem vollständigen bereitgestellten Dateipfad. Wenn Sie jedoch einen Ordner übergeben, wird dessen übergeordneter Ordner abgerufen. Das muss verstanden werden. Das gleiche Prinzip gilt für basename(). Wenn Sie den Ordnerpfad übergeben, erhalten Sie den Namen des Ordners. Die von diesen beiden Funktionen zurückgegebenen Ergebnisse enden nicht mit „/“

<?php
$dirPath=&#39;/home/WWW/Test&#39;;//目录,结尾不加&#39;/‘
 
//执行遍历
recursion_readdir($dirPath);
 
/**
*@summary 重复times次字符char
*@param $char 需要重复的字符
*@param $times 重复次数
*@return 返回重复字符组成的字符串
*/
function forChar($char=&#39;-&#39;,$times=0){
  $result=&#39;&#39;;
  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.&#39;/&#39;.$basename;
   if(is_dir($path) AND $basename!=&#39;.&#39; AND $basename!=&#39;..&#39;){
    //是目录,打印目录名,继续迭代
    echo forChar(&#39;-&#39;,$Deep).$basename.&#39;/<br/>&#39;;
    $Deep++;//深度+1
    recursion_readdir($path,$Deep);
   }else if(basename($path)!=&#39;.&#39; AND basename($path)!=&#39;..&#39;){
     //不是文件夹,打印文件名
     echo forChar(&#39;-&#39;,$Deep).basename($path).&#39;<br/>&#39;;
   }
 
 }
 closedir($resDir);
}

Die obige Implementierungsmethode von PHP zum rekursiven Durchlaufen von Dateien in einem bestimmten Ordner ist der gesamte vom Herausgeber freigegebene Inhalt. Ich hoffe, dass er Ihnen eine Referenz geben kann, und ich hoffe auch, dass Sie der chinesischen PHP-Website mehr Aufmerksamkeit schenken.

Weitere Artikel zum Implementieren der rekursiven PHP-Durchquerung von Dateien in einem bestimmten Ordner finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn