2011-04-08 119 views
3

说我有以下电子邮件地址逗号分隔的字符串:拆分逗号分隔的电子邮件地址的一个字符串引号逗号

$addrList = '[email protected], [email protected], "Guice, Doug" <[email protected]>'; 

我需要以下结果:

[0] => [email protected] 
[1] => [email protected] 
[2] => "Guice, Doug" <[email protected]> 

似乎相当很简单,但引用名称中的逗号确实引发了我试图使用preg_match_all或preg_split查找解决方案。此外,我们也应该适应也使用单引号的电子邮件,即:'smith, tom' <[email protected]>

回答

5

str_getcsv()应该给你你所需要的,尽管它会去掉引号。

编辑

如果你想要把引号回:

$addrList = '[email protected], [email protected], "Guice, Doug" <[email protected]>'; 


$t = str_getcsv($addrList); 

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

var_dump($t); 
+0

伟大的想法 - 我刚刚试了一下,我失去了在最后一个条目的实际电子邮件地址字符串 - 我只有名字:Guice,Doug。有任何想法吗?谢谢! – 2011-04-08 16:48:06

+1

你在呼应它到网络浏览器不是你!浏览器在看到时如何反应?尝试做var_dump(),而不是 – 2011-04-08 16:50:09

+0

哦,你太好了。我完全错过了!非常感谢!! – 2011-04-08 16:54:43