Se connecter / S'enregistrer
Votre question

Extraire adresse mail

Tags :
  • table
  • Programmation
Dernière réponse : dans Programmation
14 Avril 2010 08:59:01

Bonjour,

Je solicite ce site car j'ai une petite demande.

Da,s ma base de données, j'ai une table avec plusieurs champs.
Dans un champ, j'ai un grand paragraphe avec à l'intérieur une adresse mail.

Je n'arrive pas à trouver la formule, la fonction qui me permettrait d'extraire cette adresse mail de ce champ.

Par exemple, dans mon champ j'ai :

cjh vervoeruvberibvferore vrvruvbiyr ververi vri vreiv riverperbvero v jjjjjj@gmail.com dc uvervferyfveyufercfeu feugfc etèfeu fefef euf erifyie fier

Je voudrais trouver une fonction php qui m'extrait l'adresse mail, c'est à dire jjjjjj@gmail.com

Sachant qu'il y a une seule adresse a recupérer par enregistrement.

Merci d'avance.

A plus.

Julio.

Autres pages sur : extraire adresse mail

14 Avril 2010 09:42:42

merci bien petittigre, je viens de lire le sujet mais je n'arrive pas trop à comprendre comment cela fonctionne.

Je n'arrive pas à trouver la bonne requête en sql ou la fonction en php qui pourrait m'extraire du champ ("mémo"), l'adresse mail.

Merci de ton aide
m
0
l
Contenus similaires
14 Avril 2010 09:47:00

Si tu as tout lu, vers le haut de la page, il y a deux flèche bleues sous une barre d'option ( les expressions régulières... ), clique sur celle de droite et continue à lire...
m
0
l
a c 232 L Programmation
14 Avril 2010 10:18:57

Tu fais une regex avec ça :
[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}
m
0
l
14 Avril 2010 10:21:52

avec une fonction php ou dans ma requete. cela donnerai quoi avec un exemple?
m
0
l
14 Avril 2010 11:46:41

j'ai fait cela
$query2 = mysql_query("SELECT title, extra_fields from jos_k2_items where extra_fields REGEXP '#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#'") or die ("Requête invalide");
while ($row2= mysql_fetch_row($query2))
{
print "$row2[0]";

}

mais ensuite quand je l'éxécute cela m'affiche rien. De plus comment je peux ensuite afficher les adresse mail?

Merci.
m
0
l
14 Avril 2010 12:27:01

echo $query2;
m
0
l
a c 232 L Programmation
14 Avril 2010 12:34:11

Là, ta requête retourne toutes les lignes qui ont une adresse mail dans le champ extra_fields.

Tu fais un preg_match sur $row['extra_fields'] avec la regexp que je t'ai donné, et ça devrait le faire.

Edit: ah oui aussi, il ne faut pas mettre de # autour de la regexp ni de ^ au début et $ à la fin.
Sinon tu ne vas rien récupérer.
Enfin, faut utiliser la regexp que je t'ai donné quoi...
m
0
l
14 Avril 2010 12:39:12

echo preg_replace("#[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}#", "<strong>$0</strong>", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));

Ce code met en gras les adresses e-mail...

A+
m
0
l
14 Avril 2010 13:47:21

ma requete fonctionne. Elle m'affiche tous les title dont le champ extra_fields contient une adresse mail.
$query2 = mysql_query("SELECT title, extra_fields from jos_k2_items where extra_fields REGEXP '[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}'") or die ("Requête invalide");
while ($row2= mysql_fetch_row($query2))
{
print "$row2[0]<br>";

}
Mais maintenant je voudrais aussi afficher cette adresse mail. Comment faire?

Merci d'avance.

Cordialement
m
0
l
14 Avril 2010 13:49:38

Tu as essayé ma proposition ?
m
0
l
14 Avril 2010 13:50:54

ta proposition me permet juste de mettre l'adresse mail en gras. pas de la récupérer toute seule et la mettre dans un tableau.
m
0
l
14 Avril 2010 13:52:38

Un tableau comment ? "array" ou "présentation" ?
m
0
l
14 Avril 2010 13:52:50

pour l'instant pour une présentation
m
0
l
14 Avril 2010 14:03:00

$texte = preg_replace("#([a-z0-9._-]+)(@)([a-z0-9._-]{2,}\.[a-z]{2,4})#", "<tr><td>$1</td><td>$2</td><td>$3</td></tr>", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
$texte = preg_replace("#<tr><td>(.+)</td></tr>#", "<table><tr><td>NOM</td><td>@</td><td>FOURNISSEUR</td></tr>$0</table>", $texte));


A+
m
0
l
14 Avril 2010 14:25:48

merci bien.
Mais est il possible de récupérer l'adresse entièrement car quand je fais par exemple un print "$1" ca m'affiche $1.

Excuse moi mais je ne veux pas le mettre dans un tableau.
m
0
l
14 Avril 2010 14:27:51

$texte = preg_replace("#[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}#", "<strong>$0</strong>", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
echo $texte;


A+
m
0
l
14 Avril 2010 14:30:58

A part les regex tu peut essayer de récupèrer ton texte en entier puis après tu récupère le mot qui contient l'@!!! (pour récupérer le mot tu peux créer un tableau de mot et le parcourir pour trouver ton caractère mais ca reste long)
m
0
l
14 Avril 2010 14:33:28

Et pour récupérer un mot avec "@", il faut les REGEX... :D 
m
0
l
14 Avril 2010 14:37:54

non tu parcour ton mot comme un tableau et tu compare avec un if!!! c'est super long super pas efficace mais c'est facile!
m
0
l
14 Avril 2010 14:39:01

Ton idée est bonne mais pas pratique...
m
0
l
14 Avril 2010 14:40:40

Ba j'ai pas dit qu'elle l'était!! mdr
m
0
l
14 Avril 2010 15:14:36

Comment je mets ca :

$texte = preg_replace("#[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}#", "<strong>$0</strong>", $row2[1]);
echo $texte;

Voic ce qu'il m'affiche :

[{"id":"3","value":"28 rte Forestière"},{"id":"4","value":"NICE"},{"id":"5","value":"Ming Tour Service"},{"id":"6","value":"contact@mingtourservice.com"},{"id":"7","value":""},{"id":"8","value":"06300"},{"id":"9","value":"493555947"},{"id":"10","value":""},{"id":"11","value":"492049835"},{"id":"12","value":"682909475"},{"id":"13","value":""},{"id":"14","value":""},{"id":"15","value":""},{"id":"16","value":"location de voiture avec chauffeur"},{"id":"17","value":"06"}]

et moi je voudrais juste récupérer contact@mingtourservice.com .

pour chaque enregistrement je veux récupérer l'adresse mail
m
0
l
a c 232 L Programmation
14 Avril 2010 16:09:20

Essaie avec ça :
  1. $texte = preg_replace("#([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4})#", "$1", $row2[1]);
m
0
l
14 Avril 2010 16:51:26

Marche pas...
m
0
l
14 Avril 2010 17:34:21

avez vous une solution?
m
0
l
14 Avril 2010 19:45:13

Voici un problème de taille...
m
0
l
a c 232 L Programmation
14 Avril 2010 21:32:05

Euh oui merde je suis con.
  1. $texte = preg_replace("#.*([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}).*#", "$1", $row2[1]);


Ca devrait plus le faire ça.
m
0
l
15 Avril 2010 19:10:09

En plus, j'y avais pas pensé !
m
0
l
22 Avril 2010 08:43:44

Merci bien pour ton aide mais voici ce que cela m'affiche :

t@mingtourservice.com
e@wanadoo.fr
t@minibus-services.org
x@miniplusvoyages.fr

Il me recupère que la première lettre avant le @. comment faire pour ton récupérer?

Merci d'avance.

Julio.
m
0
l
22 Avril 2010 08:49:29

$texte = preg_replace("#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#", "$1", $row2[1]);


Edit : Edit : OmaR n'avais pas échappé tout les points...
m
0
l
22 Avril 2010 08:53:08

Petit tigre, cela m'affiche pareil
m
0
l
22 Avril 2010 08:53:58

$texte = preg_replace("#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#", "$1", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
echo $texte;
m
0
l
22 Avril 2010 08:59:38

voici mon code entier :
$query2 = mysql_query("SELECT title, extra_fields from jos_k2_items where extra_fields REGEXP '[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}'") or die ("Requête invalide");

while ($row2= mysql_fetch_row($query2))
{

$texte = preg_replace("#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#", "$1", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
echo $texte;

}
ca m'affiche ensuite cela :

Resource id #6Resource id #7Resource id #8Resource id #9Resource id #10Resource id #11Resource id #12Resource id #13Resource id #14Resource id #15Resource id #16Resource id #17Resource id #18Resource id #19Resource
m
0
l
a c 232 L Programmation
22 Avril 2010 09:01:52

C'est parce que .* prend tous les caractères possibles.
Est-ce qu'il y a toujours un espace avant le début d'une adresse mail ? ou un autre caractère ?

Essaie avec ça :
$texte = preg_replace("#.*[ ]([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}).*#", "$1", $row2[1]);
m
0
l
22 Avril 2010 09:05:28

juste avant l'adresse mail il y a un guillemet
m
0
l
22 Avril 2010 09:06:04

J'espère que avant tu es connecté ( mysql_connect... )
$email = mysql_query("SELECT title, extra_fields from jos_k2_items where extra_fields REGEXP '#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#'" ) or die ("Requête invalide" );
if ( $email == 1 ) {
$texte = preg_replace("#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#", "$1", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
echo $texte;
}
m
0
l
22 Avril 2010 09:10:22

il me met requete invalide voici ce que j'ai copié :
$email = mysql_query("SELECT title, extra_fields from jos_k2_items where extra_fields REGEXP '#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#'" ) or die ("Requête invalide" );

while ($row2= mysql_fetch_row($email))
{

if ( $email == 1 ) {
$texte = preg_replace("#.*((?:[a-z0-9._-]){1,}@(?:[a-z0-9._-]){2,}\.(?:[a-z]){2,4}).*#", "$1", mysql_query('SELECT title, extra_fields from jos_k2_items where extra_fields'));
echo $texte;


}
m
0
l
a c 232 L Programmation
22 Avril 2010 09:10:31

S'il y a un guillemet essaie ça :
$texte = preg_replace("#.*\"([a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}).*#", "$1", $row2[1]);
m
0
l
22 Avril 2010 09:11:47

merci bien omar c'est nickel. tu me sauve. Merci encore à Petit tigre
m
0
l
22 Avril 2010 09:11:58

$email vaut 1 si il y a une adresse e-mail et 0 si il n'y en a pas.

Edit : julio42 s'est fait grillé par OmaR
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS