PHP – jak sprawdzić poprawność adresu e-mail

W sytuacji, gdy nasz skrypt PHP ma za zadanie wysłać wiadomość do wskazanego odbiorcy, warto wyeliminować kilka podstawowych problemów jakie się w takiej sytuacji pojawiają. Przede wszystkim zawsze trzeba sprawdzić, czy w ogóle otrzymaliśmy jakiś adres (zwłaszcza w przypadku formularzy, np. subskrypcji newslettera). Po drugie, warto zbadać, czy podany ciąg znaków jest poprawnym adresem email.

Do niedawna sprawa była prosta, ponieważ nazwy użytkowników / loginy i adresy hostów składały się tylko ze znaków alfabetu łacińskiego z dodatkiem cyfr i kilku dodatkowych symboli takich jak kropki, -, _ oraz +. Ostatnio ICANN wprowadziła nowe zasady i dopuściła do użytku pierwsze domeny pisane w alfabecie arabskim. Po nich pojawią się następne.

Dlatego dawne metody, które polegały na zastosowaniu wyrażeń regularnych warto zastąpić czymś o wiele prostszym i dającym pewność, że w przyszłości nie będzie trzeba robić ręcznych aktualizacji.

Na szczęście w PHP jest wbudowana funkcja filter_var, która służy do wstępnej walidacji ciągów znaków. Jej użycie w tym przypadku może wyglądać następująco:

if(filter_var($_REQUEST['email'], FILTER_VALIDATE_EMAIL))

Funkcja filter_var zwraca ciąg znaków podany w pierwszym argumencie jeśli jest on poprawny lub FALSE jeśli nie spełnia warunku podanego w drugim argumencie. Do dyspozycji mamy kilka różnych stałych, które pozwalają na sprawdzanie różnych rodzajów ciągów (np. liczby, URL). Spis filtrów znajduje się tutaj.

Komentarze

  1. czarek mówi:

    dzieki za info

Wypowiedz się

*