Maison > développement back-end > tutoriel php > Présentation de plusieurs méthodes de parcours de répertoires et de dossiers en PHP

Présentation de plusieurs méthodes de parcours de répertoires et de dossiers en PHP

伊谢尔伦
Libérer: 2023-03-13 08:48:01
original
2031 Les gens l'ont consulté

Présentation de plusieurs phprépertoires de traverséeméthodes, qui peuvent parcourir des répertoires et des fichiers dans des répertoires, pour votre référence

Parcourir des répertoires ou parcourir des fichiers de types spécifiés sous des répertoires. la chaussure de l'enfant sera inévitablement utilisée lors de l'écriture d'un programme. PHP lui-même fournit également de nombreuses fonctions très utiles si vous les utilisez correctement, vous ne vous tromperez pas.
Cette fonction peut lister tous les fichiers du répertoire spécifié (y compris les sous-répertoires)

Le code est le suivant :

function getfiles($path){ 
foreach
(scandir($path) as $afile)
{
if($afile=='.'||$afile=='..') 
continue; 
if(is_dir($path.'/'.$afile)) 
{ 
getfiles($path.'/'.$afile); 
} else { 
echo $path.&#39;/&#39;.$afile.&#39;<br />&#39;; 
} 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);
Copier après la connexion

scandir() renvoie le répertoire spécifié Un tableau composé de tous les fichiers et répertoires. En PHP, une fonction très puissante glob() est également fournie. Le deuxième paramètre est facultatif et sera discuté plus tard. Voyons directement comment parcourir les répertoires à l'aide de glob().
On peut voir que '.' et '..' ont été filtrés du contenu renvoyé par glob(), où * signifie parcourir tous les fichiers du répertoire. En conséquence, s'il est remplacé par *.txt, tous les fichiers txt du répertoire seront parcourus. N'est-ce pas très pratique ? Sa commodité ne se limite pas à cela. Selon Yuan Fang, il cache également un énorme secret. Nous en reparlerons plus tard. Si vous êtes intéressé, vous pouvez me laisser un message pour communiquer.

Le code est le suivant :

function getfiles($path){ 
foreach(glob($path) as $afile){ 
if(is_dir($afile)) 
{ getfiles($afile.&#39;/*&#39;); } else { echo $afile.&#39;<br />&#39;; } 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);0
Copier après la connexion


Puisque *.txt est utilisé, il parcourra tous les fichiers txt du répertoire, puis si je le souhaite traverser un certain Quels sont les formats de fichiers ? ce qu'il faut faire? Un enfant a dû penser à utiliser un tableau, puis l'a rapidement écrit et remplacé par {*.txt,*.jpg,*.zip,...}. Bien sûr, ils ont également rapidement découvert que le programme renvoyait false. et je n'ai rien eu. Ne soyez pas déçu, cela implique le deuxième paramètre facultatif que nous venons de mentionner. Ce paramètre est utilisé pour modifier le comportement de glob. Pour plus de détails, vous pouvez consulter le Manuel PHP. , dites simplement un GLOB_BRACE, qui est utilisé pour développer {a,b,c,...} pour qu'il corresponde à 'a', 'b' ou 'c',... L'utilisation est la suivante : foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
Quant à la traversée complète du répertoire Vous trouverez ci-dessous toutes les fonctions de type de fichier spécifiées. Nous pouvons regarder l'exemple suivant

Parcourir tous les fichiers du dossier et des sous-dossiers

. . Le code est le suivant :

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

Quelques exemples couramment utilisés

Le code est le suivant :

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

J'ai utilisé ce code pour parcourir. tous les fichiers et enregistrez tous les noms de fichiers sous forme de tableau pour moi.

Le code est le suivant :

<?php
$s=explode("/n",trim(`dir/b e://video`));
print_r($s);
?>
<?php 
$dir="E:/video"; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$file=$file.&#39;,&#39;; //输出文件名 
$file=explode(&#39;,&#39;,$file);
} 
} 
print_r($file);//输出的就是数组了
closedir($handle); 
?>
<?php 
$dir="."; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$array_file[] = $file; //输出文件名 
} 
} 
closedir($handle);
print_r("<pre class="brush:php;toolbar:false">");
print_r($array_file);
print_r("
"); ?>
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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