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/11/2006, 21h08   #1
Invité de passage
 
Inscription : juillet 2002
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 5
Points : 1
Points : 1
Par défaut Récupérer tous les adresses mail

Bonjour,

ça fait pas mal de temps que j'essaie de creer un motif pour extraire toutes les adresses emails d'une chaine de caractères mais j'ai un soucis avec le motif ...

Je tente ce motif : `^.*@*.$` mais il me sort toute la chaine de caractère

Mon but est donc d'avoir toutes les adresses emails d'une chaine dans un tableau pour pouvoir les retraiter ensuite.

Code :
1
2
3
4
5
6
7
8
$text= 'hello, toto@gmail.com .blablabla.. <test@test.com>';
 
$motif='`^.*@*.$`';
preg_match_all($motif,$text,$out); 
 
foreach($out[0] as $test) {
	echo $test."<br>";
}
et donc avoir dans mon tableau les adresses toto@gmail.com et test@test.com mais ça ne marche pas

si quelqu'un à la soluce !! merciiii

Rémy
remyto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 21h19   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Oui la FAQ PHP à la solution jettes y un oeil
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 21h29   #3
Invité de passage
 
Inscription : juillet 2002
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 5
Points : 1
Points : 1
merci pour ta réponse mais j'ai regardé dans les FAQ et même le forum et je n'arrive pas à trouver le motif ou des infos pour m'aider à le faire. Il y a juste le motif qui te permet de controler la validité d'un email mais je l'ai testé et remodelé sous toutes les formes et ça n'a rien donné !

donc si quelqu'un à une soluce

merci
remyto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 21h32   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ben tu prends le motif, qui teste que c'est une adresse mail et au lieu d'utiliser la fonction de la faq tu utilises preg_match.

Oublies pas que le but est tout de meme de trouver des mails et donc de vérifier d'où la Q/R dans la FAQ
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 21h46   #5
Invité de passage
 
Inscription : juillet 2002
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 5
Points : 1
Points : 1
preg_match ou preg_match_all ... j'ai testé les 2 merci en tout cas!

Code :
1
2
3
4
$text = "yop@yop.fr coucouc c'est la teuf rem@coucou.fr";
$motif = "/^([^@\s<&>]+)@(?:([-a-z0-9]+)\.)+([a-z]{2,})$/i";
$out = preg_match($motif,$text); 
echo $out;
ça me renvoie 0

avec preg_match_all ça devrait parfaitement fonctionner mais c'est ce motif que je n'arrive pas à faire ...
remyto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 21h50   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Sais tu comment fonctionne les fonctions preg_match ??

Pour récuperer les valeurs trouvées c'est comme ceci :
Code :
1
2
preg_match($motif,$text,$out); 
echo $out[1];
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 22h07   #7
Invité de passage
 
Inscription : juillet 2002
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 5
Points : 1
Points : 1
Code :
1
2
3
4
$text = "yop@yop.fr coucouc c'est la teuf rem@coucou.fr";
$motif = "/^([^@\s<&>]+)@(?:([-a-z0-9]+)\.)+([a-z]{2,})$/i";
preg_match($motif,$text, $out); 
echo $out[1];
erreur : Notice: Undefined offset: 0

erreur ... si t'as le code complet je suis preneur car j'ai essayé beaucoup de possibilités avant de demander de l'aide ...


merci
remyto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 22h10   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
En ayant regardé la FAQ (le lien que je t'ai donné) tu aurais vu un lien sur les expressions régulières (superbe article de Guillaume) et il y a exactement ce que tu cherches avec la même expression régulière
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 22h26   #9
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Bon voici le même pattern qui fonctionne après lui avoir spécifié que c'est dans une chaine de caractère :
Code :
"/([^@\s<&>]+)@(?:([-a-z0-9]+)\.)+([a-z]{2,})/i";
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2006, 23h31   #10
Invité de passage
 
Inscription : juillet 2002
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 5
Points : 1
Points : 1
Code :
1
2
3
4
$text = "yop@yop.fr coucouc c'est la teuf rem@coucou.fr";
$motif = "/([^@\s<&>]+)@(?:([-a-z0-9]+)\.)+([a-z]{2,})/i";
preg_match_all($motif,$text, $out); 
foreach ($out[0] as $test) echo "<br>".$test;
ça marche nickel ! merci ! J'avais regardé les FAQ et l'article de guillaume pourtant ... bref ça marche ! merci beaucoup !
remyto 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 14h55.


 
 
 
 
Partenaires

Hébergement Web