Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction scandir pour répertorier les fichiers cachés? Vous apprendre à le mettre en œuvre étape par étape

Comment utiliser la fonction scandir pour répertorier les fichiers cachés? Vous apprendre à le mettre en œuvre étape par étape

gitbox 2025-09-02

Dans PHP, la fonction Scandir est une fonction très courante qui répertorie tous les fichiers et dossiers d'un répertoire. Par défaut, il ne répertorie pas les fichiers cachés (fichiers ou dossiers en commençant par des points . ). Cela peut nous faire des inconvénients dans certains cas, tels que comment faire cela lorsque nous devons lister tout dans un répertoire (y compris les fichiers cachés)? Cet article vous mènera étape par étape pour comprendre comment utiliser la fonction Scandir pour répertorier les fichiers cachés.

1. Introduction à la fonction Scandir

La syntaxe de base de la fonction Scandir est la suivante:

 <span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>, </span><span><span class="hljs-variable">$sorting_order</span></span><span>);
</span></span>
  • $ répertoire : spécifie le chemin du répertoire sur lequel le fichier doit être répertorié.

  • $ triging_order : facultatif, spécifiez la méthode de tri, la valeur par défaut est l'ordre croissant.

Cette fonction renvoie un tableau contenant les noms des fichiers et des dossiers du répertoire. Renvoie false s'il n'y a pas d'autorisation d'accès ou si le répertoire n'existe pas.

2. Par défaut, Scandir ne répertorie pas les fichiers cachés

Si nous exécutons le code suivant:

 <span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>);
</span></span>

Le résultat peut être une sortie similaire à ce qui suit:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; .
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; ..
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; file1.txt
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; folder1
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; file2.txt
)
</span></span>

Comme vous pouvez le voir, les fichiers cachés du répertoire (tels que les fichiers .env ) ne sont pas répertoriés, mais seulement le répertoire actuel . et le répertoire parent .. sont répertoriés.

3. Comment répertorier les fichiers cachés?

Pour faire des fichiers cachés Scandir List, nous pouvons le faire de deux manières: l'une consiste à utiliser une méthode de filtrage personnalisée, et l'autre est de filtrer en combinant le tableau renvoyé par Scandir .

Méthode 1: filtrage personnalisé

Nous pouvons personnaliser un filtre, vérifier manuellement si les noms de fichiers renvoyés par scandir commencent . , puis décidez de les garder en fonction des besoins.

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);

</span><span><span class="hljs-comment">// utiliser array_filter Filtrer les fichiers cachés</span></span><span>
</span><span><span class="hljs-variable">$allFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, function(</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>] === </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$file</span></span><span> !== </span><span><span class="hljs-string">'.'</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$file</span></span><span> !== </span><span><span class="hljs-string">'..'</span></span><span>;
});

</span><span><span class="hljs-comment">// Sortir tous les fichiers et dossiers(Comprend des fichiers cachés)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$allFiles</span></span><span>);
</span></span>

Dans cet exemple, nous avons utilisé Array_Filter pour filtrer les fichiers à commencer par (c'est-à-dire les fichiers cachés) et nous assurer que le. et .. les répertoires ne sont pas inclus.

Méthode 2: La combinaison de Scandir renvoie le résultat et la fonction globale

Une autre pratique courante consiste à utiliser une fonction globulaire en conjonction avec la méthode, qui nous permet de répertorier des types de fichiers spécifiques, y compris des fichiers cachés, par la correspondance de motifs.

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$allFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>), </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/.*'</span></span><span>));

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$allFiles</span></span><span>);
</span></span>

De cette façon, GLOB répertorie tous les fichiers cachés qui correspondent au modèle ( c'est-à-dire les fichiers qui commencent par.) Et fusionne avec les résultats renvoyés par Scandir .

4. Filtrez et traitez les fichiers retournés

Si vous souhaitez en faire plus sur les fichiers cachés énumérés, tels que l'exclusion de certains fichiers ou le tri des fichiers, vous pouvez traiter le tableau renvoyé par Scandir .

Par exemple, excluez tous les fichiers cachés à partir de .git :

 <span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);

</span><span><span class="hljs-variable">$filteredFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, function(</span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>] !== </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">'.git'</span></span><span>) !== </span><span><span class="hljs-number">0</span></span><span>;
});

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filteredFiles</span></span><span>);
</span></span>

5. Résumé

Grâce aux deux méthodes ci-dessus, vous pouvez utiliser la fonction Scandir de manière flexible pour répertorier les fichiers cachés. Que ce soit en utilisant des méthodes de filtrage personnalisées ou en combinant les fonctions GLOB , il peut vous aider à obtenir tous les fichiers et dossiers dans le répertoire, y compris ces fichiers cachés dans PHP. Dans le développement réel, le choix d'un moyen approprié de gérer les fichiers cachés peut vous donner un meilleur contrôle sur la lecture et le fonctionnement des fichiers.