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

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

醉折花枝作酒筹
Libérer: 2023-03-10 08:40:02
avant
2300 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
php
source:segmentfault.com
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