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.

Comment créer un nouveau répertoire

Vous pouvez créer un nouveau répertoire vide en appelant la fonction PHP mkdir() avec le chemin et le nom du répertoire à créer, comme dans l'exemple ci-dessous :

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>

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>

1tpe

Regarder aussi nos cours :

PHP Les boucles while et do while

PHP Les boucles while et do while

fonction get_html_translation_table

Retourne la table de traduction des entités utilisée par htmlspecialchars et htmlentities

Balise command

Définit un bouton de commande que l'utilisateur peut appeler


Votre soutien nous aide à faire fonctionner le site
Cette page vous a été utile? Partagez la pour nous encourager à continuer. Merci