Home > Backend Development > PHP Tutorial > How to implement PHP recursively traverse files in a specified folder

How to implement PHP recursively traverse files in a specified folder

高洛峰
Release: 2023-03-04 19:20:02
Original
1715 people have browsed it

I read a chapter about files and folders on the subway this morning. I just recently understood the Linux file system and felt that accessing file attributes is very similar to Shell commands, so I wanted to practice it in the evening.

I found that PHP's folder function did not seem to provide traversal of all files in a folder (including files in subdirectories), so I wanted to implement one myself.

While writing, I found that some functions for operating folders were not what I thought. For example, dirname() gets the path to the folder where the file is based on the complete file path provided, but if you pass in a folder, it gets its parent folder. This needs to be understood. The same is true for basename(). If you pass in the folder path, you will get the name of the folder. The results returned by these two functions do not end with '/'

<?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);
}
Copy after login

The above implementation method of PHP recursively traversing files in a specified folder is all the content shared by the editor. I hope it can give you a reference, and I also hope that you will pay more attention to the PHP Chinese website.

For more related articles on how to implement PHP recursive traversal of files in a specified folder, please pay attention to the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template