170 votes

Script PHP pour exécuter une boucle sur tous les fichiers dans un répertoire?

Je suis à la recherche d'un script PHP qui parcourt tous les fichiers dans un répertoire, donc je peux faire des choses avec le nom de fichier, telles que le format, l'impression ou l'ajouter à un lien. Je voudrais être en mesure de trier les fichiers par nom, type ou par date de création/ajouté/modifié. (Pensez fantaisie répertoire "index".) J'aimerais aussi pouvoir ajouter des exclusions à la liste de fichiers, tels que le script lui-même ou à d'autres "système de fichiers". (Comme l' . et .. "répertoires".)

Étant que j'aimerais être en mesure de modifier le script, je suis le plus intéressé à regarder le PHP docs et d'apprendre à écrire un moi-même. Cela dit, s'il existe des scripts, tutoriels et autres joyeusetés, s'il vous plaît laissez-moi savoir.

294voto

dbemerlin Points 6257

Vous pouvez utiliser le DirectoryIterator. Exemple de Manuel php:

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
    }
}
?>

51voto

NexusRex Points 690

Si vous n'avez pas accès à DirectoryIterator classe, essayez ceci:

<?php
$path = "/path/to/files";

if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        if ('.' === $file) continue;
        if ('..' === $file) continue;

        // do something with the file
    }
    closedir($handle);
}
?>

39voto

ChorData Points 103

Utiliser l' scandir() fonction de:

<?php
    $directory = '/path/to/files';

    if (! is_dir($directory)) {
        exit('Invalid diretory path');
    }

    $files = array();

    foreach (scandir($directory) as $file) {
        if ('.' === $file) continue;
        if ('..' === $file) continue;

        $files[] = $file;
    }

    var_dump($files);
?>

4voto

stillstanding Points 10346

glob() a des dispositions pour le tri et le filtrage. Puisque la valeur de retour est un tableau, vous pouvez faire la plupart de tout ce dont vous avez besoin.

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