Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2007, 11h58   #1
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
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 :
preg_match("/(sous-traitant = \")?(\")/i", $criteria, $res)
merci d'avance pour votre aide
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 12h30   #2
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
C'est marrant mais tu as mis les parenthèses pile là où il faut pas (à part ça c'est presque bon)

Code :
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 :
preg_match("/sous-traitant\s*=\s*\"(.+)\"/i", $criteria, $res);
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 13h21   #3
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
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 :
$criteria = 'truc = "machin" et sous-traitant = "s t 1" et bidule = "chose"'
il me sort ça :
Code :
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 ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 17h45   #4
Membre régulier
 
Avatar de The Nux
 
Inscription : février 2006
Messages : 79
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : février 2006
Messages : 79
Points : 84
Points : 84
Envoyer un message via MSN à The Nux
Ah... Alors essayes avec ça :

Code :
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 \
The Nux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2007, 19h17   #5
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
c'est nikel, merci beaucoup pour ton aide
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h07.


 
 
 
 
Partenaires

Hébergement Web