|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Bonjour,
Alors voila la chaine: Soit: benjy cerede2000@toto.fr Soit: cerede2000@toto.fr Dans le premier cas je veut récupérer "benjy", dans le deuxième "cerede2000". Voici la regex que j'ai fait pour le moment mais evidemment elle ne me donne pas ce que je veut pas loin quand même Code :
'`^(\b[0-9a-zA-Z\.\-_ ]*\b)|(\w(?:[-_.]?\w)*@\w(?:[-_.]?\w)*\.(?:[a-z]{2,4}))$`', 'benjy cerede2000@toto.fr' |
|
|
00
|
|
|
#2 | ||||||
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Avec ceci:
Code :
print_r me donne: Code :
print_r me donne: Code :
|
||||||
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
peut-être en t'aidant de strrpos($mail,' ') pour trouver le dernier espace.
une suggestion de regex si j'ai bien compris le but. Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Eu non ta REGEX n'est pas bonne et puis c'est quoi le ?!@
![]() J'ai reussi pour ma REGEX mon seul probleme c'est la case vide du tableau, j'aurai aimé ne plus l'avoir mais bon... Je fait avec |
|
|
00
|
|
|
#5 | ||||||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
Citation:
Code :
Citation:
Citation:
banjy @toto.fr une assertion négative ne déplace pas le curseur sur la chaine source, contrairement à une classe [^@] qui elle fera le déplacement. Citation:
|
||||||
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Ah effectivement c'est ce que je voulais j'avais pas fais assez attention
Merci a toi daniel61 |
|
|
00
|
|
|
#7 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Non c'est bien ce qu'il me semblait ta REGEX ne fonctionne pas comme je le voulais...
Si on a $mail = 'benjy cerede2000@toto.fr'; Je doit recupere benjy et cerede2000@toto.fr Et si on a $mail = 'cerede2000@toto.fr'; Je doit recupere cerede2000 et cerede2000@toto.fr Donc pour le moment il y a juste ca qui me donne satisfaction: Code :
preg_match('`^(\w(?:[-_. ]?\w)* )?(\w(?:[-_.]?\w)*)@\w(?:[-_.]?\w)*\.(?:[a-z]{2,4})$`', $mail, $out); $mail = 'cerede2000@toto.fr'; |
|
|
00
|
|
|
#8 | ||||||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
Citation:
Citation:
Code :
Code :
|
||||||
|
|
00
|
|
|
#9 | ||||||||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
bon, je viens d'apprendre quelque chose
exemples simplifiés: Code :
Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Eu sur les deux réponses j'ai rien comprit
|
|
|
00
|
|
|
#11 | ||||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
désolé... il y a 3 suggestions en fait. la première:
if(empty($out[1])) {array_splice($out,1,1);} empty() permet d'évaluer si le contenu d'une variable est vide ou non, empty($out[1]) retournera true si $out[1] est vide... le cas de ton preg_match sur $mail = 'cerede2000@toto.fr'; array_splice() permet en autre de détruire un ou plusieurs éléments dans un array. le premier paramètre est le array sur lequel il faut travailler, dans ton cas $out. le second paramètre est l'indice de ce array ou il faut débuter. dans ton cas c'est 1 pour $out[1]. le dernier paramètre est le nombre d'éléments à enlever. 1 seul élément est à enveler dans le cas de ton preg_match sur $mail = 'cerede2000@toto.fr'; par exemple: Code :
Code :
|
||||
|
|
00
|
|
|
#12 |
|
Membre expérimenté
![]() Étudiant Inscription : juillet 2004 Messages : 777 ![]() |
Oui ca enleve le vide, mais ca ne recupere plus l'adresse mail toute seule.
Hors j'en ai aussi besoin Et j'ai deja une méthode pour traiter la case vide, donc ca ou array_slice... Si on ne peut pas le faire a partir de la REGEX alors tant pit |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com