Detailed explanation of various methods of traversing directories and folders in PHP_PHP Tutorial

WBOY
Release: 2016-07-13 10:25:11
Original
929 people have browsed it

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.
The following is some summary 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)

Copy the code The code is as follows:

function getfiles($path){
foreach(scandir($path) as $afile)
{
if($afile=='.'||$afile=='..' ) continue;
if(is_dir($path.'/'.$afile))
{
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() There are 2 parameters. The second parameter is optional and will be discussed 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.
Copy code The code is as follows:

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 *.txt is used, all files in the directory will be traversed txt file, 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 directory traversal Below all the specified file type functions, we can see the following examples

Traverse all files in the folder and subfolders

Copy the code The code is as follows:


                                                                       //opendir() returns a directory handle, returns false
on failure while(($file = readdir($current_dir)) !== false) { //readdir() returns an entry in the open directory handle
$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //Build subdirectory path
if($file == '.' || $file == '..') {
continue;
            } else if(is_dir($sub_dir)) { //If it is a directory, recurse
>                                          else { //If it is a file, output it directly }
            }

traverse('xxtt');
?>




Some commonly used examples



Copy code

The code is as follows:


$dir="E:/video"; //Enter here Other paths//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 help me save all file names. is an array.



Copy code

The code is as follows:


$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);
?>
$dir="."; //Enter other paths here
//PHP traverses all files in the folder
$handle=opendir($dir.".");
echo "File:
";
//Define an array used to store file names
$array_file = array( );
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$array_file[] = $file; //Output file name
}
}
closedir($handle);
print_r("
");<br>print_r( $array_file);<br>print_r("
");
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/825161.htmlTechArticleTraverse the directory or traverse the specified type of files in the directory. This is what every child will inevitably use when writing a program. Arrived. PHP itself also provides many useful functions. Use them correctly...
Related labels:
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!