2010-08-29 14 views
0

Je veux aller chercher toute l'adresse e-mail dans un paragraphe. pourriez-vous s'il vous plaît me aiderphp expression régulière: Comment extraire toute l'adresse e-mail dans un paragraphe

Merci beaucoup

+0

Ajoutez le tag regex, vous obtiendrez d'autres réponses. – Brad

+2

Vous obtiendrez probablement aussi de meilleures réponses si vous montrez que vous avez fait un effort. Ce n'est pas une exigence stricte sur SO, mais les gens sont généralement plus disposés à répondre s'ils sentent qu'ils vous aident plutôt que de vous nourrir. – Cam

+1

Ceci est pour regex de style Perl, mais il vous donne une idée des complixités - http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html. Hoever http://www.regular-expressions.info/email.html est un début plus pratique. –

Répondre

-1

Essayez ceci: regex: /[-.\w][email protected][-.\w]+/i

+0

Ceci est trop générique, et va attraper des choses comme "appelez-moi @ travail", ce qui n'est pas une adresse e-mail du tout. –

0

Vous pouvez utiliser la fonction preg_match_all. La syntaxe serait comme ceci:

//Filter our the email addresses and store it in $emails 
preg_match($regexp,$text,$emails); 

//Print out the array of emails 
print_r($emails); 

où:

  • regexp $ est une expression régulière pour un email
  • $ text est le paragraphe de texte
  • emails $ est le tableau de sortie d'adresses e-mail

Une expression régulière peut varier en fonction du degré de liberté ou d'étroitesse souhaité. Essayez de créer le vôtre, afin qu'il respecte vos normes, mais si vous rencontrez des problèmes, vous pouvez simplement utiliser Google Expressions régulières.

P.S. J'espère que vous ne prévoyez pas l'utiliser pour envoyer des spams.

0

Comme suggéré par d'autres, s'il vous plaît mettre plus pour un effort dans vos questions.

Voici une implémentation très simple de ce que vous recherchez. Il n'ignore certains types de courrier électronique, mais bon, c'est la même quantité d'efforts que vous consacrez.

$matches = preg_match_all(
    "/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", 
    $text, 
    $emails 
); 

$text est votre paragraphe. $emails est le tableau de valeurs appariées.

0
<?php 
$paragraph="this is test [email protected] [email protected] testing"; 
$pattern="/([\s]*)([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*([ ]+|)@([ ]+|)([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}))([\s]*)/i"; preg_match_all($pattern, $paragraph, $matches); 

print_r($matches[0]); 
?> 
+0

Merci mon pote :) – john