oujood.com

Manipulation des répertoires en PHP

Comment créer un dossier avec PHP? ou Traitement des répertoires en PHP.Dans ce tutoriel, vous allez apprendre à traiter les répertoires ou les dossiers en utilisant PHP
Dans notre tutoriel manipulation des fichiers en PHP, vous avez appris à travailler avec les fichiers en PHP. De la même façon, PHP vous permet aussi de travailler avec les répertoires du système de fichiers, par exemple, vous pouvez ouvrir un répertoire et lire son contenu, créer ou supprimer un répertoire, lister tous les fichiers du répertoire, et ainsi de suite.

chercher |

Comment créer un nouveau répertoire

Pour créer un répertoire avec PHP, vous pouvez utiliser la fonction mkdir(). Elle prend en paramètre le nom du répertoire à créer, ainsi que les permissions d'accès au répertoire (optionnel).
Voici un exemple :

Code Exemple:

📋 Copier le code

<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
<title> PHP création d'un répertoire en php</title>

  </head>
<body>
<p>
<?php
// le chemin du dossier à créer
$dir = "testdir";
 
// Verifier l'existence du dossier
if(!file_exists($dir)){
    // Tentative de création du répertoire
    if(mkdir($dir)){
        echo "Répertoire créé avec succès.";
    } else{
        echo "ERREUR : Le répertoire n'a pas pu être créé.";
    }
} else{
    echo "ERREUR : Le répertoire existe déjà.";
}
?>
</p>
</body>
</html>

Dans cet exemple, on crée un répertoire nommé "testdir" dans le répertoire courant. Si la création du répertoire échoue, un message d'erreur est affiché. Sinon, un message de succès est affiché.

Notez que la fonction mkdir() retourne un booléen indiquant si la création a réussi ou non. Vous pouvez donc utiliser cela pour déterminer si la création a réussi ou non.

Pour que la fonction mkdir() fonctionne, les dossiers parents dans le paramètre chemin de dossier doivent déjà exister, par exemple, si vous spécifiez le chemin de dossier comme testdir/subdir, alors le dossier testdir doit exister sinon PHP générera une erreur.

Copie des fichiers d'un emplacement à un autre

Vous pouvez copier un fichier d'un emplacement à un autre en appelant la fonction PHP copy() avec les chemins source et destination du fichier comme arguments. Si le fichier de destination existe déjà, il sera écrasé. Voici un exemple qui crée une copie du fichier "exemple.txt" dans le dossier de sauvegarde.

Code

📋 Copier le code

<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
<title> PHP création de dossier et copier d'un fichier</title>

  </head>
<body>
<p>
 <?php
// le chemin du dossier à créer
$dir = "backup";
 
// Verifier l'existence du dossier
if(!file_exists($dir)){
    // Tentative de création du répertoire
    if(mkdir($dir)){
        echo "Répertoire créé avec succès.";
    } else{
        echo "ERREUR : Le répertoire n'a pas pu être créé.";
    }
} else{
    echo "ERREUR : Le répertoire existe déjà.";
}
echo "<br>";
// Source file path
$file = "test1.txt";
 
// Chemin de destination du fichier
$newfile = "backup/test1.txt";
 
// Vérification de l'existence du fichier
if(file_exists($file)){
    // Tentative de copier du fichier
    if(copy($file, $newfile)){
        echo "Fichier copié avec succès.";
    } else{
        echo "ERREUR : Le fichier n'a pas pu être copié.";
    }
} else{
    echo "ERREUR : Le fichier n'existe pas.";
}
?>
</p>
</body>
</html>

Dans cet exemple nous avons créer un répertoire backup et nous y avons copier le fichier test1.txt.

Pour que cet exemple fonctionne, le fichier source, c'est-à-dire "test1.txt", doit déjà exister, sinon PHP générera une erreur.

Lister tous les fichiers d'un répertoire

Vous pouvez utiliser la fonction PHP scandir() pour lister les fichiers et les répertoires dans le chemin spécifié.

Nous allons maintenant créer une fonction personnalisée qui listera récursivement tous les fichiers d'un répertoire en utilisant PHP. Ce script sera utile si vous travaillez avec une structure de répertoire profondément imbriquée.

Code

📋 Copier le code

<!DOCTYPE html>
<html>
<head lang="fr">
<meta charset="utf-8">
<title> PHP création de dossier et copier d'un fichier</title>

  </head>
<body>
<p>
 <?php
// Définir une fonction pour afficher la liste des fichiers dans un répertoire.
function outputFiles($path){
    // Vérifier l'existance du dossier
    if(file_exists($path) && is_dir($path)){
        // Parcouir les fichiers du dossier
        $result = scandir($path);
        
        // Filtrer les répertoires courant (.) et parent (..)
        $files = array_diff($result, array('.', '..'));
        
        if(count($files) > 0){
            // Boucle à travers le tableau résultant
            foreach($files as $file){
                if(is_file("$path/$file")){
                    // afficher la liste
                    echo $file . "<br>";
                } else if(is_dir("$path/$file")){
                    /* Appel récursif de la fonction si des répertoires sont trouvés*/
                    outputFiles("$path/$file");
                }
            }
        } else{
            echo "ERREUR : Aucun fichier trouvé dans le répertoire";
        }
    } else {
        echo "ERREUR : Le répertoire n'existe pas.";
    }
}
 
// Call the function
outputFiles("backup");
?>
</p>
</body>
</html>

Liste de tous les fichiers d'un certain type

Lorsque vous travaillez sur la structure des répertoires et des fichiers, vous pouvez parfois avoir besoin de trouver certains types de fichiers dans le répertoire, par exemple, lister uniquement les fichiers .text ou .png, etc. Vous pouvez le faire facilement avec la fonction PHP glob(), qui fait correspondre les fichiers en fonction du motif.

Le code PHP de l'exemple suivant va rechercher le répertoire documents et lister tous les fichiers avec l'extension .text. Il ne cherchera pas dans les sous-répertoires.

Code

📋 Copier le code

<p>
 <?php
/* Recherche dans le répertoire et boucle dans
tableau retourné contenant les fichiers trouvés */
foreach(glob("../*.txt") as $file){
    echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>";
}
?>
</p>

La fonction glob() peut aussi être utilisée pour trouver tous les fichiers d'un répertoire ou de ses sous-répertoires. La fonction définie dans l'exemple suivant listera récursivement tous les fichiers d'un répertoire, tout comme nous l'avons fait dans l'exemple précédent avec la fonction scandir().

Code

📋 Copier le code

<div>
<?php
// Définir une fonction pour afficher les fichiers d'un répertoire
function outputFiles($path){
    // Vérifier si le répertoire existe 
    if(file_exists($path) && is_dir($path)){
        // Rechercher les fichiers dans ce répertoire
        $files = glob($path ."/*");
        if(count($files) > 0){
            // Boucle dans le tableau récupéré
            foreach($files as $file){
                if(is_file("$file")){
                    // Affichage du nom du fichier uniquement
                    echo basename($file) . "<br>";
                } else if(is_dir("$file")){
                    /* Appeler récursivement la fonction si des répertoires ont été trouvés.*/
                    outputFiles("$file");
                }
            }
        } else{
            echo "ERREUR : Aucun fichier de ce type n'a été trouvé dans le répertoire.";
        }
    } else {
        echo "ERREUR : le répertoire n'existe pas.";
    }
}
 
// appel de la fonction
outputFiles("./");
?>
</div>

Voir aussi nos tutoriel :

list-style

Définit toutes les propriétés d'une liste dans une déclaration

la propriété box-shadow

Attache un ou plusieurs ombres portées à la boîte

right

Définit le bord de la marge droite d'une boîte placée