如果检测到无效地址,则将 host 设置为 '.SYNTAX-ERROR.'; 但并非所有无效地址都能被检测到,例如 <[email protected]> 被认为是
有效的,尽管单个点不是有效的本地部分,除非使用引号。
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_rfc822_parse_adrlist — 解析地址字符串
解析地址字符串,如 » RFC2822 中定义,并为每个地址。
string
包含地址的字符串
default_hostname
默认主机名
返回一个对象数组。对象的属性是
示例 #1 imap_rfc822_parse_adrlist() 示例
<?php
$address_string = "Joe Doe <[email protected]>, [email protected], root";
$address_array = imap_rfc822_parse_adrlist($address_string, "example.com");
if (!is_array($address_array) || count($address_array) < 1) {
die("something is wrong\n");
}
foreach ($address_array as $id => $val) {
echo "# $id\n";
echo " mailbox : " . $val->mailbox . "\n";
echo " host : " . $val->host . "\n";
echo " personal: " . $val->personal . "\n";
echo " adl : " . $val->adl . "\n";
}
?>
上面的示例将输出
# 0 mailbox : doe host : example.com personal: Joe Doe adl : # 1 mailbox : postmaster host : example.com personal: adl : # 2 mailbox : root host : example.com personal: adl :
如果检测到无效地址,则将 host 设置为 '.SYNTAX-ERROR.'; 但并非所有无效地址都能被检测到,例如 <[email protected]> 被认为是
有效的,尽管单个点不是有效的本地部分,除非使用引号。
此函数不测试本地部分或主机部分的语法,它将允许两侧的非法字符。
请注意,'host' 指的是电子邮件域,而不是实际的任何主机。
域列表是在域列表是在路由电子邮件时可用的过时的寻址方法。RFC2822 说它必须被接受,但在路由时应被忽略。
请注意,如果地址不包含个人部分或“域列表”,则数组的该部分将缺失。
尽管 RFC2822 允许在电子邮件地址列表中使用连续的逗号分隔符,但此函数不允许。这可能是一个错误。
在以下示例列表中,#4 使用“域列表”,#5 及其后是无效域,但只有最后一个实际生成错误。
$adds = 'ian eiloart <[email protected]>,
[email protected],
blobby,
"ian,eiloart"<[email protected]>,
<@example.com:[email protected]>,
foo@#,
[email protected],
ian@one@two';
$add_arr = imap_rfc822_parse_adrlist($adds, 'example.com');
var_export ($add_arr);
array (
0 =>
class stdClass {
var $mailbox = 'iane';
var $host = 'example.ac.uk';
var $personal = 'ian eiloart';
},
1 =>
class stdClass {
var $mailbox = 'shuf6';
var $host = 'example.ac.uk';
},
2 =>
class stdClass {
var $mailbox = 'blobby';
var $host = 'example.ac.uk';
},
3 =>
class stdClass {
var $mailbox = 'ian';
var $host = 'example.ac.uk';
var $personal = 'ian,eiloart';
},
4 =>
class stdClass {
var $mailbox = 'foo';
var $host = 'example.ac.uk';
var $adl = '@example.com';
},
5 =>
class stdClass {
var $mailbox = 'foo';
var $host = '#';
},
6 =>
class stdClass {
var $mailbox = 'ian';
var $host = '-example.com';
},
7 =>
class stdClass {
var $mailbox = 'ian';
var $host = 'one';
},
8 =>
class stdClass {
var $mailbox = 'UNEXPECTED_DATA_AFTER_ADDRESS';
var $host = '.SYNTAX-ERROR.';
},
)