Вы можете использовать preg_match_all
( документы ):
preg_match_all('/<([^>]+)>/', $s, $matches);
print_r($matches); // inspect the resulting array
При условии, что все адреса заключены в < ... >
, нет необходимости explode()
в строке $s
.
РЕДАКТИРОВАТЬ В ответ на комментарии, регулярное выражение может быть переписано как '/<([^@]+@[^>]+)>/'
. Не уверен, что это отказоустойчиво, хотя:)
РЕДАКТИРОВАТЬ # 2 Используйте синтаксический анализатор для любых нетривиальных данных (см. Комментарии ниже - разбор адресов электронной почты - сука) Однако некоторые ошибки можно предотвратить, удалив дублирующиеся адреса.