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

EDI, CMS, Outils, Scripts et API PHP Discussion :

nom de fichier commençant par


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut nom de fichier commençant par
    Bonjour,

    Le script suivant, me sert à supprimer des fichiers dans un répertoire xxxxx.
    j'ai donné comme instructions de supprimer les fichiers avec extension .jpg datant de plus de 48 heures.
    Par contre, je ne veux pas supprimer tous les fichiers, mais seulement ceux dont le nom commence par "images" (ces fichiers sont notés par exemple comme ça : images_23545_526.jpg.
    Je ne parviens pas à rajouter la bonne instruction.
    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
    <?php
    suppression( "xxxxx" , "jpg" , "172800" );
     
    function suppression($dossier_traite , $extension_choisie,  $age_requis)
    {
     
    $repertoire = opendir($dossier_traite);
     
    while(false !== ($fichier = readdir($repertoire)))
            {
                    $chemin = $dossier_traite."/".$fichier;
                    $infos = pathinfo($chemin);
    	        $extension = $infos['extension'];
                    $age_fichier = time() - filemtime($chemin);
     
                    if($fichier!="." AND $fichier!=".." AND !is_dir($fichier) 
    AND $extension == $extension_choisie  AND $age_fichier > $age_requis)
                    {
                    unlink($chemin);
                    }
            }
    closedir($repertoire); 
    }
    ?>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    une petite regex :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $fichier = 'images_23545_526.jpg';
    $pattern = '#(images.*\.jpg)#';
    if(preg_match($pattern,$fichier)){
    	echo 'Fichier '.$fichier.' : à supprimer !<br />';
    }
    ?>

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    autre solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (glob("/dossier/images_*.jpg") as $fichier) {
        echo "$fichier date " . filemtime($fichier);
    }

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Par défaut imbriquer
    Bonsoir jreaux62,
    Bonsoir papajoker,

    Merci pour votre réactivité. Je ne suis néophyte...
    Pourriez-vous m'indiquer ou je dois inclure l'une ou l'autre de vos solutions à l'intérieur de mon script ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Fais des tests dans une page séparée pour mieux voir le fonctionnement.

    Ensuite tu peux créer une fonction qui exécute le code et tu l'intègre comme tu avais intégré ta précédente fonction.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Alors c'est ok ?

    Je te donne encore une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    function supprimerFichierRegexTime ($dossier,$match,$age_requis)
    {
    	$files = new RegexIterator(new DirectoryIterator($dossier),$match);
    	foreach ($files as $fileinfo) if (time() - $fileinfo->getMTime() > $age_requis) unlink($fileinfo->getPathname());	
    }
     
     
    $dossier = 'Images';
    $match = '#images.*\.jpg#';
    $age_requis = 172800;
     
    supprimerFichierRegexTime($dossier,$match,$age_requis);
    ?>
    Niveau rapidité d'exécution, le code de papajoker ira aussi vite.

    L'avantage de mon exemple est d'utiliser les fonctions de recherche des regex qui sont beaucoup plus évoluées et faciles à utiliser que les fonctions de recherche de la fonction glob (sauf dans des cas simples de recherche comme ton exemple).

    Un avantage supplémentaire par rapport aux fonctions que tu utilisais dans ton premier code ("opendir", "readdir") ou par rapport à la fonction "glob" est que l'utilisation des "nouvelles" classes comme "DirectoryIterator" permet une gestion optimisée des erreurs.

    Tu pourras donc gérer facilement les erreurs en appelant ta fonction dans un bloc try/catch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //...
    $dossier = 'Images';
    $match = '#images.*\.jpg#';
    $age_requis = 172800;
     
    try
    {
        supprimerFichierRegexTime($dossier,$match,$age_requis);
    }
    catch (Exception $e) 
    {
        echo $e->getMessage();
    }

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

Discussions similaires

  1. Noms de fichiers commençant par un chiffre ?
    Par Mister Paul dans le forum Langage
    Réponses: 4
    Dernier message: 15/03/2011, 20h57
  2. Réponses: 3
    Dernier message: 03/11/2007, 18h44
  3. Nom du fichier font par rapport au nom de la FONT
    Par sergior77 dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/11/2006, 16h48
  4. [XSLT] Insertion du nom du fichier XML par transformation XSL
    Par stepd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/07/2006, 11h40
  5. Noms des fichiers téléchargés par wget
    Par benj63 dans le forum Linux
    Réponses: 2
    Dernier message: 22/02/2006, 11h54

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