imap_rfc822_parse_adrlist

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rfc822_parse_adrlist解析地址字符串

说明

imap_rfc822_parse_adrlist(string $string, string $default_hostname): array

解析地址字符串,如 » RFC2822 中定义,并为每个地址。

参数

string

包含地址的字符串

default_hostname

默认主机名

返回值

返回一个对象数组。对象的属性是

  • mailbox - 邮箱名称(用户名)
  • host - 主机名
  • personal - 个人姓名
  • adl - 在域源路由

示例

示例 #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     :

参见

添加注释

用户贡献注释 2 注释

1
Rainer Perske
19 年前
如果检测到无效地址,则将 host 设置为 '.SYNTAX-ERROR.'; 但并非所有无效地址都能被检测到,例如 <[email protected]> 被认为是
有效的,尽管单个点不是有效的本地部分,除非使用引号。
0
Ian Eiloart
18 年前
此函数不测试本地部分或主机部分的语法,它将允许两侧的非法字符。

请注意,'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.';
},
)
To Top