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 :

Extraire une valeur si elle est présente [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut Extraire une valeur si elle est présente
    bonjour

    les regex j'ai jamais réussi à comprendre, c'est pas faute d'avoir essayé

    je construis une requête dans une fonction
    cette requête peut (pas obligé) contenir : sous-traitant="nom du gars"

    dans une autre fonction plus loin, pour affichage, je voudrai extraire la valeur entre guillemets

    j'ai pondu ça mais ça ne marche pas (ça détecte comme il faut la présence ou non de la chaîne mais ça ne me renvoie pas la valeur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/(sous-traitant = \")?(\")/i", $criteria, $res)
    merci d'avance pour votre aide
    Dia [ Page DVP ] [ Site pro ]

  2. #2
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    C'est marrant mais tu as mis les parenthèses pile là où il faut pas (à part ça c'est presque bon)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/sous-traitant = \"(.+)\"/i", $criteria, $res);
    Ou tu peux aussi faire ça si tu ne veux pas obliger à ce qu'il y ai des espaces autour du = (comme ça le fait qu'il y ai un espace ou pas ça fera pas bugger l'expression)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/sous-traitant\s*=\s*\"(.+)\"/i", $criteria, $res);
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  3. #3
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    salut

    merci pour ta réponse, ça marche déjà mieux que la mienne

    par contre j'ai quand même un soucis :

    si je prends par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $criteria = 'truc = "machin" et sous-traitant = "s t 1" et bidule = "chose"'
    il me sort ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array
    (
        [0] => sous-traitant = "s t 1" et bidule = "chose"
        [1] => s t 1" et bidule = "chose
    )
    il va chercher le dernier " de la chaîne

    y aurait-il moyen d'y remédier ?
    (sachant que le caractère " n'apparaîtra jamais dans le nom à extraire)

    merci encore d'avance
    Dia [ Page DVP ] [ Site pro ]

  4. #4
    Membre régulier Avatar de The Nux
    Profil pro
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 88
    Points
    88
    Par défaut
    Ah... Alors essayes avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("@sous-traitant\s*=\s*\"([^\"]*)\"@i", $criteria, $res);
    Par contre n'essayes pas de mettre des " dans le nom, par ce que ça va bugger, et tu peux pas non plus les échaper avec \
    Nouveau bachelier et futur ingénieur
    Et j'ai même un blog !

  5. #5
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    c'est nikel, merci beaucoup pour ton aide
    Dia [ Page DVP ] [ Site pro ]

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

Discussions similaires

  1. Extraire une valeur entiere d'une chaine de caractere
    Par Aloneghost dans le forum Débuter
    Réponses: 2
    Dernier message: 25/04/2006, 12h23
  2. Extraire une valeur RDF en javascript?
    Par greg49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/04/2006, 08h49
  3. [VBA-E] Vérifier si une suite de caractère est présente
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/03/2006, 10h44
  4. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34

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