informatique:langage:php:script-php-qui-scanne-tous-les-dossiers-de-l-arborescence-courante-et-affiche-des-liens-vers-ces-dossiers

Afficher les dossiers courants

Script PHP

Voici un script en PHP qui scanne tous les dossiers de l'arborescence courante (à l'exception des dossiers cachés) et affiche des liens vers ces dossiers dans une page HTML5. Le rendu utilise Bootstrap pour un style plus élégant.

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Liste des dossiers</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h1>Liste des dossiers</h1>
        <?php
        $dir = '.';
        $folders = array_diff(scandir($dir), array('..', '.', '.DS_Store'));
        foreach ($folders as $folder) {
            if (is_dir($folder)) {
                echo '<p><a href="'.$folder.'">'.$folder.'</a></p>';
            }
        }
        ?>
    </div>
</body>
</html>

Ce script commence par inclure les en-têtes HTML nécessaires, notamment la feuille de style Bootstrap. Ensuite, il utilise la fonction PHP scandir() pour récupérer la liste de tous les fichiers et dossiers dans le répertoire courant. La fonction array_diff() est utilisée pour exclure les éléments spéciaux tels que .., . et .DS_Store (sur Mac). Ensuite, le script parcourt tous les dossiers de la liste avec une boucle foreach et utilise la fonction is_dir() pour vérifier s'il s'agit bien d'un dossier. Si c'est le cas, il affiche un lien vers ce dossier avec la fonction echo.

Pour afficher le titre title du fichier index.html contenu dans chaque dossier scanné, vous pouvez utiliser la fonction file_exists() pour vérifier si le fichier existe et la fonction file_get_contents() pour obtenir le contenu du fichier et extraire le titre title. Voici le code mis à jour :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Liste des dossiers</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h1>Liste des dossiers</h1>
        <?php
        $dir = '.';
        $folders = array_diff(scandir($dir), array('..', '.', '.DS_Store'));
        foreach ($folders as $folder) {
            if (is_dir($folder)) {
                $index_file = $folder.'/index.html';
                if (file_exists($index_file)) {
                    $content = file_get_contents($index_file);
                    if (preg_match('/<h1>(.*?)<\/h1>/', $content, $matches)) {
                        $title = $matches[1];
                    } else {
                        $title = 'Titre non trouvé';
                    }
                } else {
                    $title = 'Fichier index.html non trouvé';
                }
                echo '<p><a href="'.$folder.'">'.$folder.'</a> - '.$title.'</p>';
            }
        }
        ?>
    </div>
</body>
</html>

Ce script commence par inclure les mêmes en-têtes HTML que précédemment. Ensuite, il utilise les mêmes fonctions pour récupérer la liste des dossiers à scanner.

Pour chaque dossier, le script vérifie si un fichier index.html existe en utilisant la variable $index_file qui contient le chemin complet vers le fichier. Si le fichier existe, le script utilise la fonction file_get_contents() pour obtenir le contenu du fichier et utilise une expression régulière pour extraire le texte entre les balises <title>. Si le titre title est trouvé, il est stocké dans la variable $title, sinon la variable contient le texte “Titre non trouvé”. Si le fichier index.html n'existe pas, la variable $title contient le texte “Fichier index.html non trouvé”.

Enfin, le script affiche un lien vers le dossier ainsi que le titre title récupéré (ou un message d'erreur si le fichier index.html n'a pas été trouvé).

  • informatique/langage/php/script-php-qui-scanne-tous-les-dossiers-de-l-arborescence-courante-et-affiche-des-liens-vers-ces-dossiers.txt
  • Dernière modification : 2023/03/17 00:24
  • de Cédric ABONNEL