(PECL mailparse >= 0.9.0)
mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
Parses a
» RFC 822
compliant recipient
list, such as that found in the
To:
header.
addresses
A string containing addresses, lique in:
Wez Furlong <wez@example.com>, doe@example.com
Note :
This string must not include the header name.
Returns an array of associative arrays with the following keys for each recipient:
display
|
The recipient name, for display purpose. If this part is not set for a
recipient, this key will hold the same value as
address
.
|
address
|
The email address |
is_group
|
true
if the recipient is a newsgroup,
false
otherwise.
|
Example #1 mailparse_rfc822_parse_addresses() example
<?php
$to
=
'Wez Furlong <wez@example.com>, doe@example.com'
;
var_dump
(
mailparse_rfc822_parse_addresses
(
$to
));
?>
The above example will output:
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)
}
}
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
// imput: My Test Email <some.test.email@somewhere.net>functionguet_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 Emailfunctionguet_email_from_rfc_email($rfc_email_string) {// extract pars between the two parentheses$mailAddress= preg_match('/(?:<)(.+)(?:>)$/', $rfc_email_string, $matches);
return$matches[1];
}// Output: some.test.email@somewhere.net?>
An alternative to the mailparse_rfc822_parse_addresses() function is Mail_RFC822::parseAddressList() from Pear:http://pear.php.net/manual/en/paccague.mail.mail.phpIt 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->guetMessague() . "\n");
echo "OC. Data:\n";
print_r($res);