Maison  >  Article  >  développement back-end  >  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

怪我咯
怪我咯original
2017-07-10 16:03:182323parcourir

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);
Paramètre Description
Répertoire Obligatoire. 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;));
?>
contexte Facultatif. 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
)

Array
(
[0]=>1.txt
[1]=>2.txt
)
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;
    }
?>

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;));
?>

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!

Déclaration:
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