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 08/02/2012, 10h55   #1
Invité de passage
 
Inscription : août 2011
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 2
Points : 0
Points : 0
Par défaut Aide sur une expression régulière

Bonjours à tous,

Voilà j'expose mon problème, j'ai une chaine de caractère dans laquelle je veux chercher des valeurs selon la "clé"/valeur qu'il y a avant.

Ma variable est de ce type là:
Code :
C+31TYER'2007PRIV'WM/MediaClassPrimaryID¼}#ãâK†¡H¤*(DPRIV)WM/M
Je tiens à préciser que c'est une version raccourcie de ma chaine

Je voudrais donc sélectionner la valeur qui suit TYER mais m'arrêter à la première valeur PRIV rencontrée donc obtenir dans mon exemple:
Je sais aussi que devant chacune de mes valeurs il y a des caractères à ignorer, dans mon cas 1 caractère ' mais ce nombre peux varier.

J'ai donc mon expression qui suit:
avec donc le code php:
Code :
preg_match( "/(TYER)(.){1}(.*)(PRIV)/", $content, $matches );
Pour ceux qui auraient compris, je veux donc récupérer seulement la valeur en $matches[3] qui devrais être égal à 2007.

Or $matches[3] est égal à
Code :
2007PRIV'WM/MediaClassPrimaryID¼}`Ñ#ãâK†¡H¤*(D
Donc mon problème est que la regex récupère le dernier PRIV qu'il trouve or j'aimerais qu'il prenne ma première.

Si quelqu'un savait comment modifier ma regex pour récupérer seulement la valeur 2007 ?

Je précise que cette valeur je ne sais pas ce qu'elle contient et de quelle taille elle est. Tout ce que je sais c'est qu'elle se termine dès que je rencontre mon PRIV.

Merci d'avance et j'espère m'être fait comprendre et n'avoir fait peur à personne
steller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h18   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 678
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 678
Points : 5 425
Points : 5 425
Tu peux utiliser le modification ungreedy u qui va prendre la plus petite expression possible au lieu de la plus longue :
Code :
/(TYER)(.){1}(.*)(PRIV)/U
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h41   #3
Invité de passage
 
Inscription : août 2011
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 2
Points : 0
Points : 0
Merci beaucoup effectivement ça fonctionne comme je souhaitais
steller est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h54   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 678
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 678
Points : 5 425
Points : 5 425
Un ch'tit alors ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira 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 21h00.


 
 
 
 
Partenaires

Hébergement Web