Maison  >  Article  >  développement back-end  >  Comment obtenir tout le contenu d'un répertoire en PHP

Comment obtenir tout le contenu d'un répertoire en PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-01 17:23:122232parcourir

Cet article vous présentera comment obtenir tout le contenu du répertoire en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment obtenir tout le contenu d'un répertoire en PHP

Cette fois, nous allons introduire un itérateur de répertoire dans la bibliothèque SPL. Sa fonction est en fait très simple, comme son nom l'indique, il s'agit d'obtenir tous les éléments. dans le contenu du répertoire spécifié. Auparavant, nous devions parcourir le répertoire pour obtenir le répertoire et tous les fichiers du répertoire, ce qui nécessitait généralement un parcours récursif. Pour être honnête, il est assez difficile d'écrire ce code par nous-mêmes, c'est pourquoi PHP a préparé cet ensemble de composants intégrés. dans les API pour nous lors de la saisie du répertoire spécifié Ensuite, renvoyez directement le contenu de tous les sous-répertoires et fichiers du répertoire. Bien sûr, ce n'est pas une forme d'arbre, et l'ordre n'est pas certain. Si nous voulons l'organiser en forme d'arbre, nous devons le traiter nous-mêmes.

Sans plus tarder, regardons simplement le code :

$path = $argv[1];

// 获取目录下所有内容
$dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($dirs as $k=>$d){
    echo 'key:'. $k, PHP_EOL;
    if($d->isDir()){
        echo $d->getPathname(), PHP_EOL;
    }else{
        echo $d->getFilename(), PHP_EOL;
    }
}

//执行 php PHP获取目录中的全部内容RecursiveDirectoryIterator.php ../

// key:../.
// ../.
// key:../..
// ../..
// key:../source
// ../source
// key:../source/.
// ../source/.
// key:../source/..
// ../source/..
// key:../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// key:../source/PHP大文件读取操作.php
// PHP大文件读取操作.php
// key:../PHP大文件读取操作.md
// PHP大文件读取操作.md
// key:../PHP获取目录中的全部内容RecursiveDirectoryIterator.md
// PHP获取目录中的全部内容RecursiveDirectoryIterator.md

En fait, ce n'est qu'une ligne de code, puis une boucle directe pour sortir l'itérateur. D'après les résultats, nous pouvons voir qu'il faut d'abord entrer dans le répertoire source, puis parcourir le contenu du fichier externe et obtenir tout le contenu du répertoire dans l'ordre du répertoire et du nom de fichier. N'est-ce pas beaucoup plus pratique que d'écrire nous-mêmes la fonction récursive ?

Et si nous voulons obtenir tous les fichiers PHP du répertoire et calculer leur taille totale de fichier ? L'utilisation de cet ensemble d'opérations d'itérateur peut également être effectuée très simplement. Il nous suffit d'ajouter un itérateur régulier pour filtrer le contenu de l'itérateur précédent :

// 获取所有php文件
$regIts = new RegexIterator($dirs, '/^.+\.php$/i');
$fileSize = 0;
foreach($regIts as $k=>$p){
    echo $p->getSize() . ' ' .  $k, PHP_EOL;
    $fileSize += $p->getSize();
}
echo 'Total ', $fileSize, PHP_EOL;

// 622 ../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// 869 ../source/PHP大文件读取操作.php
// Total 1491

Cela ressemble à ls -l Cela peut facilement nous permettre de le faire. effectuer les opérations associées dans le répertoire. L'utilisation de cette classe est brièvement présentée ici. Il existe de nombreuses fonctionnalités dans la bibliothèque SPL qui méritent notre exploration. Apprenez lentement et pratiquez lentement pour améliorer continuellement notre capacité de programmation élégante.

Code de test :

https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php

Apprentissage recommandé : Tutoriel vidéo php

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer