PHP Doku:: Parse RFC 822 compliant addresses - function.mailparse-rfc822-parse-addresses.html

Verlauf / Chronik / History: (2) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzE-Mail-relevante ErweiterungenMailparseMailparse Funktionenmailparse_rfc822_parse_addresses

Ein Service von Reinhard Neidl - Webprogrammierung.

Mailparse Funktionen

<<mailparse_msg_parse

mailparse_stream_encode>>

mailparse_rfc822_parse_addresses

(PECL mailparse >= 0.9.0)

mailparse_rfc822_parse_addressesParse RFC 822 compliant addresses

Beschreibung

array mailparse_rfc822_parse_addresses ( string $addresses )

Parses a » RFC 822 compliant recipient list, such as that found in the To: header.

Parameter-Liste

addresses

A string containing addresses, like in: Wez Furlong <wez@example.com>, doe@example.com

Hinweis:

This string must not include the header name.

Rückgabewerte

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.

Beispiele

Beispiel #1 mailparse_rfc822_parse_addresses() example

<?php

$to 
'Wez Furlong <wez@example.com>, doe@example.com';
var_dump(mailparse_rfc822_parse_addresses($to));

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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


3 BenutzerBeiträge:
- Beiträge aktualisieren...
dancablam
7.05.2007 8:05
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.

24.11.2004 13: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.04.2003 6: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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)