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.
(PECL mailparse >= 0.9.0)
mailparse_rfc822_parse_addresses — Analyse des adresses
Analyse une liste d'adresses valides eu égard à la » RFC 822,
comme celles trouvées dans l'en-tête To:
.
addresses
Une chaîne de caractères contenant les adresses, comme :
Wez Furlong <[email protected]>, [email protected]
Note:
Cette chaîne de caractères ne doit pas contenir le nom de l'en-tête.
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. |
Exemple #1 Exemple avec mailparse_rfc822_parse_addresses()
<?php
$to = 'Wez Furlong <[email protected]>, [email protected]';
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) "[email protected]" ["is_group"]=> bool(false) } [1]=> array(3) { ["display"]=> string(15) "[email protected]" ["address"]=> string(15) "[email protected]" ["is_group"]=> bool(false) } }
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.
<?php
// input: My Test Email <[email protected]>
function get_displayname_from_rfc_email($rfc_email_string) {
// match all words and whitespace, will be terminated by '<'
$name = preg_match('/[\w\s]+/', $rfc_email_string, $matches);
$matches[0] = trim($matches[0]);
return $matches[0];
}
// Output: My Test Email
function get_email_from_rfc_email($rfc_email_string) {
// extract parts between the two parentheses
$mailAddress = preg_match('/(?:<)(.+)(?:>)$/', $rfc_email_string, $matches);
return $matches[1];
}
// Output: [email protected]
?>
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 <[email protected]>";
$res= Mail_RFC822::parseAddressList($addr);
if (PEAR::isError($res)) die("NOT VALID: " . $res->getMessage() . "\n");
echo "OK. Data:\n";
print_r($res);