PHP: удалить адрес электронной почты только из возможных <> - PullRequest
0 голосов
/ 30 августа 2011

Мне нужна небольшая помощь в получении адресов электронной почты только из их ВОЗМОЖНО ВКЛЮЧЕННЫХ <> скобок.

Например, у меня есть следующие 3 строки, и мне нужно, чтобы каждая из них возвращала только адрес электронной почты:

darth@vader.com

"Darth Vader" <darth@vader.com>

"Darth Vader" <darth@vader.com> "Possible additional text" (Shouldn't be here but I need to make sure the regex gets rid of it anyway just in case.)

На каждом из тех, кого я хотел бы, чтобы $ email равнялся darth@vader.com

1 Ответ

3 голосов
/ 30 августа 2011

Как насчет сопоставления действительных адресов электронной почты?Регулярное выражение, которое мы используем для проверки действительности:

/(([a-z0-9!#$%&*+-=?^_`{|}~][a-z0-9!#$%&*+-=?^_`{|}~.]*[a-z0-9!#$%&*+-=?^_`{|}~])|[a-z0-9!#$%&*+-?^_`{|}~]|("[^"]+"))\@([-a-z0-9]+\.)+(com|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum|co|co\.uk)/img

( reFiddle link )

Или вот то, которое полностью не зависит от TLD:

/(([a-z0-9&*\+\-\=\?^_`{|\}~][a-z0-9!#$%&*+-=?^_`{|}~.]*[a-z0-9!#$%&*+-=?^_`{|}~])|[a-z0-9!#$%&*+-?^_`{|}~]|("[^"]+"))\@([-a-z0-9]+\.)+([a-z]{2,})/img

( reFiddle link )

Один из них должен работать для того, что вы ищете, и должен охватывать большинство случаев.

...