126 votes

Comptez le nombre de fichiers dans le répertoire PHP

Je travaille sur un projet un peu nouveau. Je voulais savoir combien de fichiers se trouvent dans un certain répertoire.

<div id="header">
<?php 
    $dir = opendir('uploads/'); # This is the directory it will count from
    $i = 0; # Integer starts at 0 before counting

    # While false is not equal to the filedirectory
    while (false !== ($file = readdir($dir))) { 
        if (!in_array($file, array('.', '..') and !is_dir($file)) $i++;
    }

    echo "There were $i files"; # Prints out how many were in the directory
?>
</div>

Voici ce que j'ai trouvé jusqu'à présent (en cherchant). Cependant, il ne s'affiche pas correctement ? J'ai ajouté quelques notes, alors n'hésitez pas à les supprimer, elles sont juste là pour me permettre de comprendre au mieux.

Si vous avez besoin de plus d'informations ou si vous avez l'impression que je n'ai pas assez décrit la situation, n'hésitez pas à me le dire.

297voto

Baba Points 49157

Vous pouvez simplement faire ce qui suit :

$fi = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS);
printf("There were %d Files", iterator_count($fi));

83voto

JKirchartz Points 6237

Vous pouvez obtenir le nombre de fichiers comme suit :

$directory = "/path/to/dir/";
$filecount = 0;
$files = glob($directory . "*");
if ($files){
 $filecount = count($files);
}
echo "There were $filecount files";

où le "*" c'est que vous pouvez le changer pour un type de fichier spécifique si vous voulez comme "*.jpg" ou vous pourriez faire plusieurs types de fichiers comme ceci :

glob($directory . "*.{jpg,png,gif}",GLOB_BRACE)

el GLOB_BRACE le drapeau étend {a,b,c} pour correspondre à 'a', 'b' ou 'c'.

50voto

intelis Points 1331

Essayez ça.

// Directory
$directory = "/dir";

// Returns an array of files
$files = scandir($directory);

// Count the number of files and store them inside the variable..
// Removing 2 because we do not count '.' and '..'.
$num_files = count($files)-2);

43voto

Laurent Brieu Points 1070

Vous devez avoir :

<div id="header">
<?php 
    // integer starts at 0 before counting
    $i = 0; 
    $dir = 'uploads/';
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false){
            if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
                $i++;
        }
    }
    // prints out how many were in the directory
    echo "There were $i files";
?>
</div>

35voto

La meilleure réponse à mon avis :

$num = count(glob("/exact/path/to/files/" . "*"));
echo $num;
  • Ça ne compte pas et
  • C'est une phrase toute faite
  • J'en suis fier.

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