2010-10-07 12 views
5

Jeśli istnieje taki, który poradzi sobie z tym, jaki byłby poprawny wzorzec regex do wyodrębniania adresów e-mail z ciągu znaków z adresu e-mail z wiersza "Do", który pozwala na adresy do być oddzielone przecinkami ",", średnikami "," spacjami lub dowolną kombinacją tych trzech elementów. Wyrażenie musi również być w stanie ignorować tekst "szumu", na przykład, jeśli adres jest ujęty w znakach "<" i ">", lub ma rzeczywistą nazwę obok adresu e-mail. Na przykład, od tego łańcucha, który był w polu Do:Regex do parsowania Formularz e-mail Pole "To"

"Joe Smith" <[email protected]>, [email protected]; [email protected] [email protected] 

Wzór powinien być w stanie powrócić następujące mecze: jkowalski @ przykład, [email protected], [email protected], mjane @ gmail.com

Używam PHP, więc jeśli nie można tego zrobić w pojedynczym regex, to zdecydowanie jestem otwarty na inne rozwiązania oparte na PHP.

Dzięki

+3

Użyj biblioteki do analizy wiadomości e-mail. Nie musisz robić tego sam. (Nie jesteś pierwszym programistą PHP, który musi analizować nagłówki wiadomości e-mail). – Ether

Odpowiedz

6

Spróbuj

\b[A-Z0-9._%+-][email protected](?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b 

(dzięki uprzejmości RegexBuddy), jak w

preg_match_all('/\b[A-Z0-9._%+-][email protected](?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i', $subject, $result, PREG_PATTERN_ORDER); 
$result = $result[0]; 

Uwaga modyfikator /i aby wielkość liter.

Zobacz także this question dla wyjaśnienia niedociągnięć wyrażeń regularnych dotyczących wyszukiwania adresów e-mail w ciągu znaków.

+3

dziękuję za zezwolenie '+' w moim adresie e-mail ... ostatnio natknąłem się na kilka formularzy rejestracyjnych, które na to nie pozwalają .. naprawdę mnie denerwuje. – mpen

1

Chociaż Twoje pytanie było specyficzne dla RegEx i Tim dał ci wielką odpowiedź dla osób poszukujących prostego rozwiązania, spojrzeć na mailparse_rfc822_parse_addresses na stronie http://php.net/manual/en/function.mailparse-rfc822-parse-addresses.php

Uwaga nie jest to standardowa funkcja PHP i wymaga instalacji rozszerzenia . Ekonomiczne rozwiązania hostingowe mogą uniemożliwić zainstalowanie rozszerzenia PECL.

Powiązane problemy