Comment implémenter PHP pour parcourir récursivement des fichiers dans un dossier spécifié

高洛峰
Libérer: 2023-03-04 19:20:02
original
1699 Les gens l'ont consulté

J'ai lu un chapitre sur les fichiers et les dossiers dans le métro ce matin. J'ai récemment compris le système de fichiers Linux et j'ai senti que l'accès aux attributs des fichiers était très similaire aux commandes Shell, j'ai donc voulu le pratiquer le soir.

J'ai trouvé que la fonction de dossier de PHP ne semble pas permettre de parcourir tous les fichiers d'un dossier (y compris les fichiers des sous-répertoires), j'ai donc voulu en implémenter une moi-même.

En écrivant, j'ai découvert que certaines fonctions de gestion des dossiers n'étaient pas ce que je pensais. Par exemple, dirname() obtient le chemin d'accès au dossier dans lequel le fichier est basé sur le chemin complet du fichier fourni, mais si vous transmettez un dossier, il obtient son dossier parent. Cela doit être compris. La même chose est vraie pour basename(). Si vous transmettez le chemin du dossier, vous obtiendrez le nom du dossier. Les résultats renvoyés par ces deux fonctions ne se terminent pas par '/'

<?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);
}
Copier après la connexion

La méthode ci-dessus pour implémenter la traversée récursive PHP des fichiers dans un dossier spécifié correspond à tout le contenu partagé par l'éditeur. J'espère qu'elle pourra vous donner une référence, et j'espère également que vous accorderez plus d'attention au site Web PHP chinois.

Pour plus d'articles sur la façon d'implémenter la traversée récursive PHP de fichiers dans un dossier spécifié, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!