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 15/01/2008, 15h09   #1
Invité régulier
 
Inscription : mai 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 27
Points : 5
Points : 5
Par défaut Sélection d'une chaine dans une autre chaine

Bonjour,

j'ai stoker une chaine dans une variable et je souhaite extraire certaine partie délimité par exemple par : "AUTHOR = {" au debut et par "}," en fin.

exemple de chaine :
article {MR23199400, AUTHOR = {NOM Prenom}, YEAR = {2007},

je souhaite exraire NOM Prenom

voici mon code

Code :
1
2
3
4
5
6
7
if (substr($res, 0, 7)=="article")
{
	if (ereg("AUTHOR = {(.*)},", $res, $aut))
   {
   	echo $aut[1];
   }
}
mais pour l'instant il me resort ca : NOM Prenom}, YEAR = {2007

je voudrais qu'il s'arrete la premiere fois qu'il rencontre },

Coment faire.

Merci d'avance.
dftrish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 19h30   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Les expressions régulières en PHP sont gourmandes. Je vous propose la même chose avec l'aide des fonctions PCRE (recommandées) :
Code :
if (preg_match_all("~AUTHOR = {(.*)},~U", $res, $aut, PREG_SET_ORDER))
(non testé)

Il est aussi possible de restreindre le masque à ([^}]*) au lieu de (.*) et de spécifier l'option de non-gourmandise (U, ici à la fin du motif).

S'il n'y a pas de captures multiples la fonction preg_match suffira. Il faudra éventuellement préciser d'autres options si cela s'avère être nécessaire dont i pour l'insensibilité à la casse et s si le métacaractère . doit inclure les sauts de la ligne.

Pour de plus amples informations : Initiation aux expressions régulières en PHP
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 17h01   #3
Invité régulier
 
Inscription : mai 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 27
Points : 5
Points : 5
Merci je vais essayer tout ca !
dftrish 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 08h01.


 
 
 
 
Partenaires

Hébergement Web