2011-04-08 4 views
3

Dire que j'ai les adresses e-mail suivantes séparées par des virgules dans une chaîne:Fractionnement séparées par des virgules adresses e-mail dans une chaîne par des virgules entre guillemets

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

Je dois le résultat suivant:

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

Semble assez simple, mais cette virgule dans le nom cité m'a vraiment poussé à essayer de trouver une solution en utilisant preg_match_all ou preg_split. Nous devrions également prendre en compte les courriels qui utilisent des guillemets simples pour les noms, par exemple: 'smith, tom' <[email protected]>

Répondre

5

str_getcsv() devrait vous donner ce dont vous avez besoin, bien que les guillemets soient supprimés.

EDIT

Si vous voulez mettre les guillemets retour dans:

$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

Grande idée - je viens d'essayer, et je perdre l'adresse e-mail réelle sur la dernière entrée la chaîne - je ne reçois que le nom: Guice, Doug. Des idées? Merci! –

+1

Vous faites écho à un navigateur Web, n'est-ce pas! Comment un navigateur réagit-il lorsqu'il voit ? Essayez de faire var_dump() à la place –

+0

OH vous êtes si bon. J'ai totalement raté ça! Merci beaucoup!! –

Questions connexes