Получить адрес электронной почты из строки почтового ящика - PullRequest
7 голосов
/ 03 сентября 2010

Мне нужно извлечь адрес электронной почты из этой строки почтового ящика.Я думал о str_replace, но отображаемое имя и адрес электронной почты не являются статичными, поэтому я не знаю, как это сделать с помощью регулярных выражений.

Пример: "My name <email@example.com>" должно привести к "email@example.com ".

Есть идеи?

Спасибо, Матти

Ответы [ 5 ]

15 голосов
/ 03 сентября 2010

Вы можете использовать imap_rfc822_parse_adrlist для анализа этого адреса:

$addresses = imap_rfc822_parse_adrlist('My name <email@gmail.com>');
5 голосов
/ 03 сентября 2010

по номиналу, будет работать следующее:

preg_match('~<([^>]+)>~',$string,$match);

но у меня есть подозрение, что тебе нужно что-то лучше этого. Существует множество «официальных» шаблонов регулярных выражений в электронной почте, и вам следует быть более точным в отношении контекста и правил соответствия.

1 голос
/ 03 сентября 2010

Если вы знаете, что строка окружена < и >, вы можете просто разделить ее в соответствии с этим.

Это предполагает, что у вас всегда будет только одна пара < и >, окружающих строку, и это не гарантирует, что результатом будет шаблон электронной почты.

В противном случае вы всегда можете прочитать шаблоны регулярных выражений электронной почты .

0 голосов
/ 03 сентября 2010
$s = 'My name <email@gmail.com>';
$s = substr(($s = substr($s, (strrpos($s, '<')+1))), 0, strrpos($s, '>'));

В основном это извлекает все между последним <и последним>

0 голосов
/ 03 сентября 2010

или Просмотрите регулярные выражения (preg_match).

что-то вроде: [^ <] <em><([^>] )>;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...