使用引号中的逗号分隔逗号分隔的字符串中的电子邮件地址

时间:2011-04-08 16:30:58

标签: php split

说我在字符串中分隔了以下电子邮件地址逗号:

$addrList = 'Kevin.Brine@pppg.com, Robert.Thomas@pppg.com, "Guice, Doug" <Doug.Guice@pppg.com>';

我需要以下结果:

[0] => Kevin.Brine@pppg.com
[1] => Robert.Thomas@pppg.com
[2] => "Guice, Doug" <Doug.Guice@pppg.com>

看起来相当简单,但引用名称中的逗号确实让我试图使用preg_match_all或preg_split找到解决方案。此外,我们也应该容纳使用单引号的电子邮件,即:'smith, tom' <tom.smith@abc.com>

1 个答案:

答案 0 :(得分:5)

str_getcsv()应该为您提供所需的内容,但它会删除引号。

修改

如果您想将引号放回:

$addrList = 'Kevin.Brine@pppg.com, Robert.Thomas@pppg.com, "Guice, Doug" <Doug.Guice@pppg.com>';


$t = str_getcsv($addrList);

foreach($t as $k => $v) {
    if (strpos($v,',') !== false) {
        $t[$k] = '"'.str_replace(' <','" <',$v);
    }
}

var_dump($t);