Maison > développement back-end > tutoriel php > Exemple d'utilisation de la fonction php scandir() pour exclure des répertoires spécifiques

Exemple d'utilisation de la fonction php scandir() pour exclure des répertoires spécifiques

怪我咯
Libérer: 2023-03-13 12:42:01
original
2406 Les gens l'ont consulté

scandir() renvoie un tableau de fichiers et de répertoires dans le répertoire spécifié. En cas de succès, renvoyez un tableau de fichiers et de répertoires. Renvoie FALSE en cas d'échec. Si le répertoire n'est pas un répertoire, une erreur de niveau E_WARNING est générée.

Syntaxe

scandir(directory,sorting_order,context);
Copier après la connexion
ParamètreDescription
RépertoireObligatoire. Spécifie les répertoires à analyser.
sorting_order
参数描述
directory必需。规定要扫描的目录。
sorting_order

可选。规定排列顺序。默认是 0,表示按字母升序排列。

如果设置为 SCANDIR_SORT_DESCENDING 或者 1,则表示按字母降序排列。

如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。

context可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。
Facultatif. Spécifiez l'ordre de tri. La valeur par défaut est 0, indiquant l'ordre alphabétique croissant.

S'il est défini sur SCANDIR_SORT_DESCENDING ou 1, il trie par ordre alphabétique décroissant.

Si défini sur SCANDIR_SORT_NONE, renvoie des résultats non triés.
<?php
print_r(scandir(&#39;test_directory&#39;));
?>
Copier après la connexion
contexteFacultatif. Spécifie l’environnement pour les descripteurs de répertoire. context est un ensemble d'options qui modifient le comportement des flux de répertoire.

Exemple :

Le code est le suivant :
Array
(
[0]=>.
[1]=>..
[2]=>1.txt
[3]=>2.txt
)
Copier après la connexion

Array
(
[0]=>1.txt
[1]=>2.txt
)
Copier après la connexion
Le résultat est le suivant :

Dans la plupart des cas, vous n'avez besoin que du tableau de liste de fichiers du répertoire, comme suit :

<?php
functionfind_all_files($dir)
{
    $root = scandir($dir);
    
foreach
($rootas$value)
    {
        if($value === &#39;.&#39; || $value === &#39;..&#39;){
            
continue
;
        }
        if(is_file("$dir/$value")){
            $result[] = "$dir/$value";
            continue;
        }
        foreach(find_all_files("$dir/$value")as$value)
        {
            $result[] = $value;
            }
        }
    
return
$result;
    }
?>
Copier après la connexion

Ce problème est généralement résolu en excluant les éléments du tableau "." : Le code est le suivant : Une autre méthode consiste à utiliser la fonction array_diff

<?php
$directory=&#39;/path/to/my/directory&#39;;
$scanned_directory=array_diff(scandir($directory),array(&#39;..&#39;,&#39;.&#39;));
?>
Copier après la connexion

pour éliminer le tableau obtenu en exécutant la Fonction scandir :

Le code est le suivant :Normalement, la gestion du code générera des fichiers .svn, ou .htaccess et d'autres fichiers qui restreignent les autorisations d'accès aux répertoires. Il est donc plus pratique de filtrer via la fonction array_diff.

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