To just extract the email address out of an RFC822 line, it's faster and more reliable to just use a simple regex such as:
<?php
$rfc = '"Bob Smith" <bob@smith.com>';
preg_match('/[\\w\\.\\-+=*_]*@[\\w\\.\\-+=*_]*/', $rfc , $regs);
$parsed = $regs[0];
?>
The above code will pull out: bob@smith.com
No matter the variation of the RFC822 line, as long as there's a valid email address in it somewhere, the above regex will find it.
mailparse_rfc822_parse_addresses
(PHP 4 >= 4.0.7, PECL mailparse:0.9-2.1.1)
mailparse_rfc822_parse_addresses — Analyse des adresses
Description
array mailparse_rfc822_parse_addresses
( string $addresses
)
Analyse une liste d'adresses valides eu égard à la » RFC 822, comme celles trouvées dans l'en-tête To:.
Liste de paramètres
- addresses
-
Une chaîne de caractères contenant les adresses, comme : Wez Furlong <wez@example.com>, doe@example.com
Note: Cette chaîne de caractères ne doit pas contenir le nom de l'en-tête.
Valeurs de retour
Retourne un tableau de tableaux associatifs contenant les clés suivantes pour chaque adresses :
| display | Le nom de l'adresse, aux fins d'affichage. Si cette partie n'est pas définie pour une adresse, il contiendra la même valeur que la clé address. |
| address | L'adresse email |
| is_group | TRUE si l'adresse est un newsgroup, FALSE sinon. |
Exemples
Exemple #1 Exemple avec mailparse_rfc822_parse_addresses()
<?php
$to = 'Wez Furlong <wez@example.com>, doe@example.com';
var_dump(mailparse_rfc822_parse_addresses($to));
?>
L'exemple ci-dessus va afficher :
array(2) { [0]=> array(3) { ["display"]=> string(11) "Wez Furlong" ["address"]=> string(15) "wez@example.com" ["is_group"]=> bool(false) } [1]=> array(3) { ["display"]=> string(15) "doe@example.com" ["address"]=> string(15) "doe@example.com" ["is_group"]=> bool(false) } }
mailparse_rfc822_parse_addresses
dancablam
07-May-2007 08:05
07-May-2007 08:05
24-Nov-2004 01:12
An alternative to the mailparse_rfc822_parse_addresses() function is Mail_RFC822::parseAddressList() from Pear:
http://pear.php.net/manual/en/package.mail.mail.php
It parses the string and returns a structured tree of data. Returns a pear_error object if the string is not valid.
Example:
require_once "PEAR.php";
require_once "Mail/RFC822.php";
$addr= "Hi <hi@world.org>";
$res= Mail_RFC822::parseAddressList($addr);
if (PEAR::isError($res)) die("NOT VALID: " . $res->getMessage() . "\n");
echo "OK. Data:\n";
print_r($res);
mat at phpconsulting dot com
25-Apr-2003 06:59
25-Apr-2003 06:59
If for some reason you cannot compile mailparse into your install of PHP, you will also find an extremely similar function in the Mail_MIME PEAR class, specifically in mimeDecode.php.
