Sprawdzanie poprawnosci emaila - parsowanie maila

Przesiadując na forach internetowych bardzo często widzę pytania odnośnie wyrażeń regularnych, które sprawdzają poprawność maila. Dzisiaj przyszło mi na myśl stworzyć swój pierwszy artykuł tutaj i z każdym takim pytaniem na forum kierować ludzi do tego artykułu. Dziś, w tym artykule opiszę dokładnie funkcję, która parsuje maila zwracając tablicę zawierającą kolejno adres email, login i domenę w mailu. W przypadku niepowodzenia zwróci false. Wynik parsowania można zwrócić na dwojaki sposób – w zwykłej tablicy indeksowanej numerycznie lub w tablicy asocjacyjnej.

Funkcja wygląda tak:

 

  1. function mail_parser($str, $opt=0) {
  2.       preg_match('#^([a-zA-Z0-9_.-]*)\@([a-zA-Z0-9_.-]*)$#', $str, $tmp);
  3.       if($opt == 0) {
  4.             if((empty($tmp[1]) === false) && (empty($tmp[2]) === false)) {
  5.                   return $tmp;
  6.             } else {
  7.                   return false;
  8.             }
  9.       } else {
  10.             if((empty($tmp[1]) === false) && (empty($tmp[2]) === false)) {
  11.                   $tmp2['mail']    = $str;
  12.                   $tmp2['login']   = $tmp[1];
  13.                   $tmp2['domen']   = $tmp[2];
  14.                   return $tmp2;
  15.             } else {
  16.                   return false;
  17.             }
  18.       }
  19. }
Linijka 1 to oczywiście definicja funkcji. Przyjmuje ona dwa parametry [adres email i numer opcji zwracanych wyników] z czego drugi jest opcjonalny ponieważ zadeklarowaliśmy jego domyślną wartość. Innymi słowy parametr drugi nie jest wymagany przy wywoływaniu funkcji. Gdy nie podamy drugiego parametru przyjmie on domyślną wartość zadeklarowaną w tej linii.

Linijka 2 to wyrażenie regularne, które sprawdza poprawność emaila i rozgranicza wynik na parę komórek tablicy. Możesz na końcu wyrażenia [przed zamknięciem okrągłego nawiasu] dodać wartość: [pl] aby ograniczyć maile do tych w domenie .pl. Wynik zostaje zwrócony w zwykłej tablicy w zmiennej $tmp.

Linijka 3 – 8 to jak widać sprawdzanie czy tablica $tmp nie jest pusta, czyli czy mail jest poprawny, ale najpierw sprawdzona zostanie zmienna $opt przechowująca informację jaką opcję zwracanych danych wybrałeś/łaś. Wynikiem tych linijek jest zwrócenie przez funkcję informacji dotyczących maila [w przypadku poprawności wprowadzonego maila] lub zwrócenie false [w przypadku nieprawidłowego maila].  Linijka 10 – 17 to ten sam przypadek co poprzednio jednak zwracana jest tablica asocjacyjna [w przypadku poprawności wprowadzonego maila] lub false [w przypadku nieprawidłowego maila].

Kilka przykładów użycia wraz z wynikami:

$m     = 'jan.kowalski@domena.pl';
# przyklad 1:
print_r(mail_parser($m));
# przyklad 2:
print_r(mail_parser($m, 0));
# przyklad 3:
print_r(mail_parser($m, 1));
$m     = 'jan.kowalski@';

# przyklad 4:
print_r(mail_parser($m, 0)); // zwróci false
# przyklad 5:

print_r(mail_parser($m, 1)); // zwróci false

 

 


 
# przyklad 1:
Array (
    [0] => jan.kowalski@domena.pl
    [1] => jan.kowalski
    [2] => domena.pl
)

 
# przyklad 2:
Array (
    [0] => jan.kowalski@domena.pl
    [1] => jan.kowalski
    [2] => domena.pl
)

 
# przyklad 3:
Array (
    [email] => jan.kowalski@domena.pl
    [login] => jan.kowalski
    [domen] => domena.pl
)
 

 

To wszystko.Miłego użytkowania.

Pozdrawiam.

 

P.S. Artykuł udostepniam na licencji CC, zaś kod na licencji GNU GPL

Licencja: Creative Commons - użycie niekomercyjne - bez utworów zależnych