Problème de regex, capture de texte entre 2 caractères

Résolu
cs_b4d Messages postés 29 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mars 2008 - 18 mars 2008 à 12:20
cs_b4d Messages postés 29 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mars 2008 - 18 mars 2008 à 12:46
Bonjour,

J'ai un petit problème avec des regex !

Après avoir longtemps cherché, j'ai trouvé la solution à mon premier problème. Mais pas au second !

J'ai une chaîne de caratère qui contient un opérateur, un @, un nom, et éventuellement un point suivi de caractères quelconques.
Exemple:<=@23.p.ao

On connait l'opérateur et le @.

J'aimerais récupérer le nom compris entre le @ et le point. Attention que le @ sera toujours là, mais le point (et la chaine de caractères qui le suit) lui est facultatif.

J'aimerais aussi que s'il n'y a rien entre le @ et le point (ou la fin de chaine), $x soit vide.

J'ai ceci mais ça foire:
$x = preg_replace ('#(?:.*)@(.*)\.?(?:.*)#U', '$1', $opt);

J'ai traivaillé avec preg_replace mais n'importe quel fonction est autorisée si ça fonctionne !

Je sais que c'est un peu exigeant... mais si vous saviez venir à mon secours, ça me ferait très plaisir!

Merci beaucoup.

1 réponse

cs_b4d Messages postés 29 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 18 mars 2008
18 mars 2008 à 12:46
Désolé d'avoir été impatient (j'ai quand même cherché toute la matinée...) en faisant un autre test, j'ai trouvé:




$x = preg_replace ('#^(?:[^@]*)@([^.]*)[.]?(.*)#s', '$1', $opt);

Ca marche super chez moi et sur le serveur de projet...

Merci quand même.
3
Rejoignez-nous