PHP - sprawdzanie poprawności podanego adresu e-mail

DZIAŁANIE: Podany adres e-mail ma poprawną składnię!
 

Kod:

Ewentualne Objaśnienia:

Aby zrozumieć pewną istotę działania tego przykładu należy zapoznać się z czymś takim jak wyrażenie regularne!

A więc moi drodzy - wyrażenia regularne :
Najprostszą metodą określenia takiego wyrażenia jest wypisanie jego wszystkich znaków po kolei. No jednak to nie jest zbyt ciekawa i dobra metoda. Czasem jednak nie wystarcza nam jeden łańcuch znaków lecz pewne, że tak powiem podłańcuchy połączone w jeden - czyli jak tutaj w e-mailu jest pewna struktura adresu e-mailowego, która jest prawidłowa.  No i dlatego w PHP są pewne funkcje odnośnie wyrażeń strukturalnych, są to : ereg(), eregi(), ereg_replace(), eregi_replace(), split(), spliti()

W wyrażeniach regularnych mamy 2 rodzaje znaków:
- znaki zwyczajne czyli takie jak a,b,c,d,5,6,7 itd itd - zwykłe
- znaki niezwyczajne czyli są to : ^,$,*,+,?,.,(,),[,],{,},\, ...

Jeżeli chcemy aby jakiś specjalny znak stał się po prostu znakiem ( a nie miał jakieś tam swoje specjalne znaczenie ) poprzedzamy go ukośnikiem na przykład dla kropeczki : \.

Teraz co znaczą te nasze znaki niezwyczajne :
- kropka - oznacza obojętnie jaki, dowolny znak - na przykład zapis r.k - tutaj pasuje na przykład rak, rad, ryk, albo ".a." pasuje ola, cola, kopaczka - itd itd - czyli zamiast kropki dajemy dowolny znak ( czy też ich więcej - w tym przykładzie ograniczenia nie ma )
- Jeśli dane wyrażenie ma się znajdować na początku łańcucha, poprzedzamy je znakiem ^
- natomiast wszystko to co stoi przed znakiem dolara : $ -  traktujemy jako koniec ciągu znaków
- Gwiazdka * opisuje dowolną ilość tego co przed nią akurat jest czyli na przykład b.*l - baaaaal, boooool, byyyyyyl itd itd
- Plusik -  + znaczy tyle co gwiazdka * ale występuje to przynajmniej raz
- znak zapytania ? znaczy, że to co przed nim jest może wystąpić tylko raz lub w ogóle
- nawiasy klamrowe {} - działanie można by porównać do zaawansowanego działania gwiazdki, plusa czy tam pytajnika. W nawiasie klamrowym podajemy dokładną liczbę powtórzeń tego co stoi przed nim. Możemy także podać dwie liczby oddzielone przecinkiem, co oznacza powtórzenie wyrażenia minimalnie tyle razy ile pierwsza liczba, a maksymalnie tyle ile druga.
- nawiasy () - możemy pewne części umieszczać w nawiasach okrągłych (tzw. Atom) Ma to taki sam cel jak w zapisie matematycznym. Chodzi o to by działanie jakiegoś 'niezwyczajnego' znaku wpływało na większą część wyrażenia
- kolejne są nawiasy kwadratowe czyli tzw zakresy. Podaje się w nich zestaw znaków mogących wystąpić w danym miejscu na przykład : [jkg]{5} -  pięcioliterowy wyraz złożony tylko i wyłącznie z liter jkg. W tych nawiasach kwadratowych można też podyać przedział znaków. Robimy to wpisując dwa znaki oddzielone myślnikiem. Ważne aby znakowi przed myślnikiem odpowiadał mniejszy kod Asci od znaku po nim, np:  [A-Z] - duże litery,  [a-z] - małe litery,  [0-9] - cyfry
- jeśli chcemy uzyskać Polskie znaki najlepiej jest je wszystkie wypisać :  [0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ] - wszystkich cyfry, małe i duże litery, małe i duże polskie znaki
- jak nam trzeba znak myślnika, który normalnie używany jest do określania przedziałów znaków - umieszczamy go na pierwszej lub ostatniej pozycji w nawiasach kwadratowych.

W PHP stosować można także  tzw. character classes - zdefiniowane zbiory znaków :
- [[:alpha:]] - wszystkie litery
- [[:alnum:]] - wszystkie litery oraz cyfry
- [[:digit:]] - cyfry
- [[:xdigit:]] - liczby w systemie szesnastkowym
- [[:lower:]] - małe litery
- [[:upper:]] - wielkie litery
- [[:punct:]] - znaki interpunkcyjne

- ^ -  wpisany na 1 miejscu wewnątrz nawiasów kwadratowych znaczy negację całego zakresu
- w wyrażeniach regularnych pomiędzy znakami czy zakresami czy też naszymi atomami możemy postawić znak "|" -  oznacza logiczną operację 'OR' ( lub )

Jeżeli pojęliście logikę wyrażeń regularnych - zapewne łatwo Wam teraz zinterpretować przedstawiony kod, a dokładnie działanie funkcji, którą już znacie - czyli ereg .
Na pewno może być to przydatne na przykład przy wysyłaniu jakiegoś formularza przez naszego klienta, użytkownika czy odwiedzającego - po wysłaniu sprawdzamy sobie czy podany adres e-mail jest poprawny, jeżeli tak wysyłamy dalej formularz - jeżeli nie - powiadamiamy o tym i oczekujemy ponownego wypełnienia formularza .