Vous pouvez utiliser preg_match_all
(docs):
preg_match_all('/<([^>]+)>/', $s, $matches);
print_r($matches); // inspect the resulting array
A condition que toutes les adresses sont enfermés dans <...>
il n'y a pas besoin de explode()
la chaîne $s
.
EDIT En réponse aux commentaires, l'expression rationnelle pourrait être réécrite comme '/<([^@][email protected][^>]+)>/'
. Je ne sais pas si cela est fail-safe, bien :)
EDIT # 2 Utiliser un analyseur pour toutes données non trivial (voir les commentaires ci-dessous - l'analyse syntaxique d'adresse e-mail est une chienne). Certaines erreurs peuvent cependant être évitées en supprimant les adresses en double.
N'utilisez pas d'expressions régulières, utilisez un analyseur. – Gumbo
Merci les gars, vous m'a indiqué dans la bonne direction. – pws5068