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 :

problème de preg_match [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut problème de preg_match
    Bonjour,
    J'ai un souci qui est entrain de me rendre complètement chèvre !!! j'explique en qq mots : je cherche à télécharger un fichier texte puis à extraire de ce fichier les valeurs qui sont entre #.
    La phase de téléchargement de fichier se fait sans problème. Il est bien déplacé du dossier temporaire vers le dossier de stockage et ce fichier n'est pas vide.
    Ensuite, vient ceci dans mon script et c'est là où ça ne va plus du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $key1='[^#.*]'; // qui commence par #  et qui contient n'importe quel caractère 0 ou plusieurs fois
    $fc=file($stock2); //lit le fichier stocké et renvoie le résultat dans le tableau $fc
    $i=0;
    foreach ($fc as $line)
    {
       echo "<br>fc = ".$fc[$i]."<br>"; //vérifie qu'il y a queqlque chose dans chaque ligne du fichier
       echo "<br>ligne = ".$line."<br>"; //vérifie que $line contient qq chose
       preg_match($key1,$line,$valeur); // cherche $key1, dans la ligne et l'écrit ds $valeur
       echo "<br>valeur: ".$valeur[0]."<br>"; // vérifie que le preg_match fonctionne **ligne 40**
       $i++;
       }
    /
    Les lignes fc = et ligne = sont bien trouvées et valent la même chose.
    Le problème est que le preg_match ne fonctionne visiblement pas car j'ai l'erreur
    Notice: Undefined offset: 0 in c:\program files\easyphp1-7\www\magic_site\traitement_remplissage_stock2.php on line 40
    la ligne 40 est celle où je veux afficher la valeur trouvée par le preg_match.
    Par la suite, je souhaite stocker cette valeur dans une base mysql et bien sûr, il ne se passe rien, vu que cette variable est vide.
    J'ai bien défini mes variables au départ. J'ai lu les faq. j'ai cherché à quoi pourrait être dû ce fameux "Notice: Undefined offset: 0", mais j'ai rien trouvé qui puisse me servir.
    Auriez-vous une idée d'où se situe le problème, car j'ai beau tout retourner dans tous les sens, je ne vois pas mon erreur ?
    Un grand merci.

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    n'utilise pas les crochets pour les bornes de ton regex.
    Dans tes corchets, ne met que la negation : le reste sera donc pris par default.
    J'ai mis preg_match_all, all pour recuperer toutes les occurences de ta ligne : as tu prevu qu'il y en ai plusieurs a recuperer dans une meme ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $key1='/#[^#]+#/'; // qui commence par #  et qui contient n'importe quel caractère 0 ou plusieurs fois
    $fc="blab#dsdf#sdf/§.sdfs0.{#{[[{#|"; //lit le fichier stocké et renvoie le résultat dans le tableau $fc
     
    preg_match_all($key1,$fc,$valeur); // cherche $key1, dans la ligne et l'écrit ds $valeur
    print_r($valeur); //affiche tout ce qu'on a trouvé
    Apres, faut voir si tu veux recuperer les dieses ou non.
    Dans ce cas, faut utiliser des parentheses pour dire ce que tu veux recuperer dans ton expression lorsque celle-ci est reconnue.
    Z.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Merci beaucoup pour ta réponse rapide.
    Malheureusement, ça ne résoud pas tout à fait mon problème.
    Ton exemple fonctionne si je n'utilise pas le fichier téléchargé. Mais, dès que j'utilise le fichier et que donc je mets le preg_match dans un foreach, ça coince.
    par contre ça m'a permis de mettre le doigt sur le fait que c'est la regex qui foire.
    Maintenant j'ai ceci qui s'affiche :
    valeur: Array
    y'a du progrès
    Je cherche du coup de ce côté-là.
    Encore merci pour ta réponse.

  4. #4
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    A quelle ligne apparait l'erreur ?
    fait un print_r de $valeur pour voir comment est ton tableau de résultats.
    Z.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Bon, alors en fait ca fonctionne bien !!!!!!!!!! C'est juste que j'obtiens un tableau à 2 dim, donc mes valeurs sont dans valeurs[0][0] et non dans valeurs[0]. Par contre pourquoi ??? mystère !
    En tous cas, un immense merci Zwiter !

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut
    Citation Envoyé par minusette Voir le message
    C'est juste que j'obtiens un tableau à 2 dim, donc mes valeurs sont dans valeurs[0][0] et non dans valeurs[0]. Par contre pourquoi ??? mystère !
    pourquoi ?
    tout simplement parce que c'est comme ça que ça marche (cf la doc php), non ?

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

Discussions similaires

  1. [RegEx] problème avec preg_match()
    Par samuel4256 dans le forum Langage
    Réponses: 11
    Dernier message: 24/10/2010, 15h20
  2. [RegEx] Problème de preg_match
    Par Zoro63 dans le forum Langage
    Réponses: 14
    Dernier message: 19/12/2008, 15h43
  3. [RegEx] problème avec preg_match
    Par thewaterkidny dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2008, 16h57
  4. [RegEx] problème avec preg_match
    Par othmane126 dans le forum Langage
    Réponses: 1
    Dernier message: 15/10/2007, 15h04
  5. Réponses: 23
    Dernier message: 24/05/2007, 10h32

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