Se connecter avec
S'enregistrer | Connectez-vous

Extraire adresse mail

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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

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.
Expert Programmation

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...

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
Expert Programmation

$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+

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

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.

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
Expert Programmation

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]);
Expert Programmation

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;
}

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;


}
Lassé par la pub ? Créez un compte
Tom's guide dans le monde