search
HomeBackend DevelopmentPHP TutorialSeveral ways to traverse directories and folders in PHP_PHP Tutorial
Several ways to traverse directories and folders in PHP_PHP TutorialJul 13, 2016 am 10:48 AM
phpunderandintroduceseveralseveral kindsCanclassmatefoldermethodofTable of contentsTraverse

The editor below will introduce to you some methods of traversing directories. Here you can traverse directories, directories and other files in them. If you are interested in this, feel free to enter for reference.

Traverse directories or traverse files of specified types in directories. This is something that every kid will inevitably use when writing programs. PHP itself also provides many very useful functions. If you use them correctly, you will not go wrong.
Below are some summaries of my personal learning process. I hope it will be helpful to children who want to learn PHP.

//This function can list all files in the specified directory (including subdirectories)

The code is as follows Copy code
 代码如下 复制代码

function getfiles($path){
foreach(scandir($path) as $afile)
{

if($afile=='.'||$afile=='..') continue;
if(is_dir($path.'/'.$afile))
{
getfiles($path.'/'.$afile);
} else {
echo $path.'/'.$afile.'
';
}
}
} //简单的demo,列出当前目录下所有的文件

getfiles(__DIR__);

function getfiles($path){

foreach(scandir($path) as $afile)

{


if($afile=='.'||$afile=='..') continue;

if(is_dir($path.'/'.$afile))
 代码如下 复制代码

function getfiles($path){
foreach(glob($path) as $afile){
if(is_dir($afile))
{ getfiles($afile.'/*'); } else { echo $afile.'
'; }
}
} //简单的demo,列出当前目录下所有的文件
getfiles(__DIR__);0

{ getfiles($path.'/'.$afile); } else { echo $path.'/'.$afile.'
'; } } } //Simple demo, list all files in the current directory getfiles(__DIR__);
scandir() returns an array of all files and directories in the specified directory. In PHP, it also provides a very powerful function glob(). glob() has 2 parameters. As for the second parameter is optional, more on that later. Let’s look directly at how to traverse directories using glob(). // //It can be seen that '.' and '..' have been filtered out from the content returned by glob(), where * means traversing all files in the directory. Correspondingly, if it is changed to *.txt, all txt files in the directory will be traversed. Isn’t it very convenient? Its convenience is not limited to this. According to Yuan Fang, there is also a huge secret hidden in it. What is it? We will talk about it later. If you are interested, you can leave me a message to communicate.
The code is as follows Copy code
function getfiles($path){ foreach(glob($path) as $afile){ if(is_dir($afile)) { getfiles($afile.'/*'); } else { echo $afile.'
'; } } } //Simple demo, list all files in the current directory getfiles(__DIR__);0

Since using *.txt will traverse all txt files in the directory, what if I want it to traverse files in certain formats at the same time? what to do? Some kid must have thought of using an array, and then quickly wrote it out and replaced it with {*.txt,*.jpg,*.zip,...}. Of course, they also quickly discovered that the program returned false and got nothing. . Don't be disappointed, this involves the second optional parameter just mentioned. This parameter is used to change the behavior of glob. For details, you can check the PHP manual. I won't go into too much here. I will just talk about GLOB_BRACE. This is Used to expand {a,b,c,...} to match 'a', 'b' or 'c',.... The usage is as follows: foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}

As for the complete function of traversing all specified file types in a directory, we can see the following example


Traverse all files in folders and subfolders

The code is as follows Copy code
 代码如下 复制代码



   


                    function traverse($path = '.') {
                $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
                    if($file == '.' || $file == '..') {
                        continue;
                    } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
                        echo 'Directory ' . $file . ':
';
                        traverse($sub_dir);
                    } else {    //如果是文件,直接输出
                        echo 'File in Directory ' . $path . ': ' . $file . '
';
                    }
                }
            }
           
            traverse('xxtt');
        ?>
   

 代码如下 复制代码

$dir="E:/video"; //这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir.".");
echo "文件:
";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
echo $file; //输出文件名
}
}
closedir($handle);
?>

                                                                                                function traverse($path = '.') {                      $current_dir = opendir($path);                                                                                                                                                                                                                                                                                                                                                                                                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file; If($file == '.' || $file == '..') {                                     continue; } Else if (is_dir ($ sub_dir)) {// If it is a directory, recursive echo 'Directory ' . $file . ':
'; traverse($sub_dir);                                                                                                                                                                                                       echo 'File in Directory ' . $path . ': ' . $file . '
';                  }                 }             }                                                                                   traverse('xxtt');           ?>
Some commonly used examples
The code is as follows Copy code
$dir="E:/video"; //Enter other paths here //PHP traverses all files in the folder $handle=opendir($dir."."); echo "File:
"; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo $file; //Output file name } } closedir($handle); ?>

I used this code to traverse all files and save all file names as an array for me.

The code is as follows
 代码如下 复制代码

$s=explode("/n",trim(`dir/b e://video`));
print_r($s);
?>

$dir="E:/video"; //这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir.".");
echo "文件:
";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$file=$file.','; //输出文件名
$file=explode(',',$file);
}
}
print_r($file);//输出的就是数组了
closedir($handle);
?>

$dir="."; //这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir.".");
echo "文件:
";
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$array_file[] = $file; //输出文件名
}
}
closedir($handle);

print_r("

");<br>
print_r($array_file);<br>
print_r("
");
?>
Copy code
$s=explode("/n",trim(`dir/b e://video`));
print_r($s);
?>

$dir="E:/video"; //Enter other paths here
//PHP traverses all files in the folder
$handle=opendir($dir.".");
echo "File:
";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$file=$file.','; //Output file name
$file=explode(',',$file);
}
}
print_r($file);//The output is an array
closedir($handle);
?>

print_r("
");<br>
print_r($array_file);<br>
print_r("
");
?>
http://www.bkjia.com/PHPjc/632763.html
www.bkjia.com
truehttp: //www.bkjia.com/PHPjc/632763.htmlTechArticleThe following editor will introduce to you several methods of traversing directories. Here you can traverse directories and directories and other The document is available for reference if you are interested. Traverse directories...
Statement
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
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft