IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer plusieurs fichiers... [Sources]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut Supprimer plusieurs fichiers...
    Hello,

    Après avoir fais quelques recherche en vain, je m'adresse à ce forum:
    Mon problème étant le suivant:

    J'ai un dossier qui contient des fichiers html ( peu importe le type ) !
    Ces fichiers sont créés pour un suivit ( peu importe aussi ! lol ).
    Bref, le problème qui se pose est que de temps en temps je ne dois que supprimer un fichier dont je connais le nom...donc pour cela pas de problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unlink('nomfichier.html');
    En revanche lorsque je veux tout remettre à zéro, il faut que j'efface tous les fichiers se trouvant dans mon dossier et sans connaitre leur nom...

    Ma question est la suivant:
    Y a t-il un moyen de supprimer tous les fichiers d'un dossier sans en faire le listage complet pour ensuite les effacer ! (par exemple les effacer en disant efface(*.html) j'ai tester avec la commande unlink cela ne fonctionne pas !

    voily voilou...
    merci de votre patiente !
    bye bye

  2. #2
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 237
    Points
    8 237
    Par défaut
    salut,
    tu peux faire ça avec la commande system mais le problème, c'est toujours l'hébergement. il faut que ce dernier accepte la fonction system()

    sinon, il existe cette fonction sur la doc php sur unlink
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    /**
     * rm() -- Vigorously erase files and directories.
     *
     * @param $fileglob mixed If string, must be a file name (foo.txt), glob pattern (*.txt), or directory name.
     *                        If array, must be an array of file names, glob patterns, or directories.
     */
    function rm($fileglob)
    {
       if (is_string($fileglob)) {
           if (is_file($fileglob)) {
               return unlink($fileglob);
           } else if (is_dir($fileglob)) {
               $ok = rm("$fileglob/*");
               if (! $ok) {
                   return false;
               }
               return rmdir($fileglob);
           } else {
               $matching = glob($fileglob);
               if ($matching === false) {
                   trigger_error(sprintf('No files match supplied glob %s', $fileglob), E_USER_WARNING);
                   return false;
               }     
               $rcs = array_map('rm', $matching);
               if (in_array(false, $rcs)) {
                   return false;
               }
           }     
       } else if (is_array($fileglob)) {
           $rcs = array_map('rm', $fileglob);
           if (in_array(false, $rcs)) {
               return false;
           }
       } else {
           trigger_error('Param #1 must be filename or glob pattern, or array of filenames or glob patterns', E_USER_ERROR);
           return false;
       }
     
       return true;
    }
    ?>
    $fileglob peut-être un *.html
    je n'ai pas testé cette fonction

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Exact !
    Je l'avais sous les yeux !!!!!!!!!!

    En fait ce n'est pas la fonction unlink qui efface *.html !
    Il s'agit la de la fonction rmdir():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    } else if (is_dir($fileglob)) {
               $ok = rm("$fileglob/*");
               if (! $ok) {
                   return false;
               }
               return rmdir($fileglob);
    Je vais fouiller ça de plus près ! je re avec plus de précision...

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Ma première analyse était fausse....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    } else if (is_dir($fileglob)) {
               $ok = rm("$fileglob/*");
               if (! $ok) {
                   return false;
               }
               return rmdir($fileglob);
    Explication et modification en français...:
    (corrigé moi si je me suis trompé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    /*
        rm() permet d'effacer un dossier, un fichier ou plusieurs fichiers
        -----------------------------------------------------------------------
        Cette fonction permet de passer en paramètre un fichier (fichier.html),
        un ensemble de fichiers (*.html) ou un tableau de fichiers (tableau)
    */
    function rm($fichier_ou_dossier)
    {   // si le paramètre est une chaîne de caractère...
      if (is_string($fichier_ou_dossier))
      { // si le paramètre est un fichier...
        if (is_file($fichier_ou_dossier))
        { // on efface le fichier et renvoit le resultat (true|false)
          return unlink($fichier_ou_dossier);
        }
        else
          // si c'est un dossier...
          if (is_dir($fichier_ou_dossier))
          { // on supprime tous les fichiers du dossier
            $suppr_fichier = rm("$fichier_ou_dossier/*");
            // retourne false si les fichiers n'ont pas été supprimés
            if (!$suppr_fichier)
            {
              return false;
            }
            // supprime le dossier après être vidé
            return rmdir($fichier_ou_dossier);
          }
          else
          { // on recherche les fichiers vérifiant un masque (*.html)
            $fichiers_masque = glob($fichier_ou_dossier);
            // si aucun fichier...
            if ($fichiers_masque === false)
            {
              // déclanche une erreur utilisateur
              trigger_error(sprintf('Aucun fichier correspondant au masque suivant: %s', $fichier_ou_dossier), E_USER_WARNING);
              return false;
            }
            // on rappel la fonction rm() pour chaque fichier afin de les supprimer un par un
            $rslt = array_map('rm', $fichiers_masque);
            // si un false est trouvé il y a eu une erreur lors de la suppression
            if (in_array(false, $rslt))
            {
              return false;
            }
          }
      }
      else
        // s'il s'agit un tableau contenant les noms des fichiers...
        if (is_array($fichier_ou_dossier))
        {
          // on rappel la fonction rm() pour chaque fichier afin de les supprimer un par un
          $rslt = array_map('rm', $fichier_ou_dossier);
          // si un false est trouvé il y a eu une erreur lors de la suppression
          if (in_array(false, $rslt))
          {
            return false;
          }
      }
      else
      {
        // déclanche une erreur utilisateur
        trigger_error('Le paramètre passé en argument n\'est pas valide !', E_USER_ERROR);
        return false;
      }
      return true;
    }
    ?>
    Voila une fonction que je suis sur sera utile à plus d'une personne...
    bye bye et merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer plusieurs fichiers d'un ftp en vb.net
    Par clément59 dans le forum VB.NET
    Réponses: 29
    Dernier message: 30/01/2013, 15h44
  2. [delete] supprimer plusieurs fichiers
    Par Newenda dans le forum MATLAB
    Réponses: 3
    Dernier message: 16/06/2009, 16h05
  3. Supprimer plusieurs fichier sur FTP
    Par DevPerl dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 16/09/2007, 23h38
  4. Supprimer plusieurs fichiers du même nom en une ligne de commande
    Par Orbiplanax dans le forum Administration système
    Réponses: 4
    Dernier message: 12/09/2007, 18h25
  5. Supprimer les dernieres lignes et concatener plusieurs fichier
    Par filsdugrand dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 11/04/2006, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo