63 votes

Obtenir les fichiers dans un répertoire

Comment obtenir les noms de fichiers dans un répertoire en utilisant PHP?

Je ne pouvais pas trouver la commande appropriée à l'aide de Google. J'espère donc que cette question aidera ceux qui s'en iront de la même manière.

97voto

Paolo Bergantino Points 199336

Il y a beaucoup de façons. L'ancienne façon est - scandir mais DirectoryIterator est probablement la meilleure façon.

Il y a aussi readdir (pour être utilisé avec opendir) et glob.

Voici quelques exemples sur la façon de les utiliser pour imprimer tous les fichiers dans le répertoire courant:

DirectoryIterator d'utilisation: (recommandé)

foreach (new DirectoryIterator('.') as $file) {
    if($file->isDot()) continue;
    print $file->getFilename() . '<br>';
}

scandir d'utilisation:

$files = scandir('.');
foreach($files as $file) {
    if($file == '.' || $file == '..') continue;
    print $file . '<br>';
}

opendir et readdir d'utilisation:

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if($file == '.' || $file == '..') continue;
        print $file . '<br>';
    }
    closedir($handle);
}

glob d'utilisation:

foreach (glob("*") as $file) {
    if($file == '.' || $file == '..') continue;
    print $file . '<br>';
}

Comme mentionné dans les commentaires, glob , c'est agréable car l'astérisque j'ai utilisé il peut en effet être utilisé pour faire des matchs sur les fichiers, glob('*.txt') vous obtiendrez tous les fichiers texte dans le dossier et glob('image_*') vous obtiendrez tous les fichiers qui commencent par image_

0voto

Daff Points 22358

L'ancienne manière serait:

 <?php
    $path = realpath('.'); // put in your path here
    $dir_handle = @opendir($path) or die("Unable to open $path");
    $directories = array();
    while ($file = readdir($dir_handle)) 
    	$directories[] = $file;
    closedir($dir_handle);
?>
 

Comme déjà mentionné, l’itérateur de répertoire pourrait être le meilleur moyen pour PHP 5.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X