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 :

Date et création de fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut Date et création de fichier
    Bonjour à tous,

    Je cherche à faire un script qui détecte si un fichier est présent dans un dossier. Jusqu'ici rien de bien dramatique mais ce qui me bloque c'est que le nom de ce fichier est "variable".
    Je m'explique :

    Lors de l'exécution de mon script, je dois vérifier si un fichier contient dans son nom "Companies", si ce n'est pas le cas, je dois le créer avec comme préfixe la date actuelle de création du fichier. J'ai quelque chose de ce genre :

    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
     
    $date = date("YmdHis");
    $filename = glob('./migrations/*.php');
    $p = "Companies";
    $nombis = preg_grep("/$p/", $filename); // ligne qui pose problème
    echo "$nombis[0]". "\n";
     
    if (empty($nombis[0]))
    {
        $companies="_CreateTableCompanies.php";
        $nom = "$date.$companies";
     
        $tab = explode('.', $nom);     // tableau contenant 2 valeurs
     
        echo $tab[0].$tab[1] . "\n";
     
        touch ("./migrations/$tab[0]$tab[1].php");
    }
     
     
    else {
        echo "le fichier existe déjà";
    }
    C'est ce qui se passe dans le grep le problème...apparemment je n'ai le droit qu'à un délimiteur et je ne sais pas quoi mettre car tous les fiichiers seront de la forme date_nom.php. Le mieux serait que j'arrive a mettre une chaine de caractère mais j'ai pas l'impression qu'on puisse recherche dans un tableau avec preg_match...

    Une idée svp ?

    Merci d'avance

  2. #2
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Le premier paramètre de preg_grep est une chaine de caractères correspondant à un pattern. Si tu veux trouver les fichiers qui contiennent "Companies" dans le nom pourquoi n'essaie tu pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nombis = preg_grep("*Companies.php", $filename);

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut
    Merci de ta réponse rapide !

    J'ai déjà essayé cette méthode mais visiblement il doit manquer quelque chose, car ça me retourne une erreur :

    PHP Warning: preg_grep(): No ending delimiter '*' found

    C'est pour ça que je suis pas certain d'avoir le droit de glisser une chaine de caractère ici, par exemple quand je met "/_/" en guise de pattern ça me prend bien en compte les fichiers contenant un _...mais bon moi j'ai besoin de 'Companies'

  4. #4
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    effectivement un pattern ne se renseigne pas comme ça, autant pour moi, tu peux en savoir plus ici : http://php.net/manual/fr/regexp.introduction.php.

    essaie directement car j'ai pas l'impression que ta variable php $p sois prise en compte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nombis = preg_grep("/Companies/", $filename);

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Par défaut
    tu peux aussi utiliser une comparaison de chaîne,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $nom1=basename('chemin_vers_ton_fichier');
    $nom2=str_ireplace('Compagnies','',$nom1);
    if($nom1 != $nom2){
       // ce que tu veux faire si le fichier contient compagnie
    }else{
       //ce que tu veux faire si il ne le contient pas.
    }
    après pour faire du récursif tu peux utiliser un foreach sur ton dossier vu qu'il s'agira d'un tableau contenant tes fichiers, et utilise aussi is_file ou !is_dir pour vérifier que tu gére bien des fichiers et non des dossiers.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut
    Cette fois ça me retourne :

    PHP Warning: preg_grep(): Delimiter must not be alphanumeric or backslash

    Même chose avec $p.

    EDIT: je vais essayer ta méthode

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 13
    Par défaut
    Avec cette méthode je fais plus ou moins face à la même problématique non ? Je veux dire par là:
    "Chemin vers ton fichier", si je dois inclure le nom exacte de mon fichier je ne le connais pas à l'avance car il doit être de la forme d'une date_nomfichier.php.
    Mon grand souci est de ne spécifier qu'une partie du nom du fichier pour savoir si il existe ou non.

    Ou alors il y a quelque chose que j'ai mal compris ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour savoir si une chaine est contenue dans une autre c'est
    http://php.net/manual/fr/function.strpos.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strpos($filename, 'Compagnies') !== FALSE) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Citation Envoyé par Janesh Voir le message
    Cette fois ça me retourne :

    PHP Warning: preg_grep(): Delimiter must not be alphanumeric or backslash

    Même chose avec $p.

    EDIT: je vais essayer ta méthode
    oui j'ai édité mon dernier message il faut laisser les slashs mais avec la chaine directement comme j'ai mis et ça devrait marcher

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2007, 21h02
  2. Impossible de copier la date de création du fichier source
    Par azerazerazer dans le forum Windows XP
    Réponses: 4
    Dernier message: 28/11/2007, 20h13
  3. Recopie de fichiers :date de création du fichier perdue
    Par mugwump dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2007, 16h17
  4. Problème de précision sur date de création des fichiers
    Par Bruno Orsier dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2007, 14h26
  5. Date de création de fichiers
    Par bov13 dans le forum VBScript
    Réponses: 27
    Dernier message: 19/09/2006, 10h00

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