5 praktycznych wyrażen regularnych w PHP
Za każdym razem gdy przychodzi mi skorzystać z dobrodziejstwa jakim są wyrażenia regularne (które swoją drogą mogłyby się dorobić jakiegoś ogólnie uznawanego standardu), sięgam po gotowe i sprawdzone wzorce. Poniżej umieściłem kilka najczęściej używanych przeze mnie wyrażeń regularnych wraz z przykładowym kodem w PHP.
Adres email
Walidacja adresu email jest często spotykanym przykładem użycia wyrażeń regularnych. Adres email składa się z 3 podstawowych części:
- nazwy użytkownika - za sprawdzenie tego elementu odpowiada ([0-9a-zA-Z]([-_.\w]*[0-9a-zA-Z_])*
- symbolu @
- oraz nazwy domeny - za sprawdzenie tego elementu odpowiada (([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})
Całość daje nam razem uproszczony adres email, którego poprawność możemy sprawdzić używając poniższego kodu:
$test_string = "przykladowy@email.tutaj.pl"; if (preg_match('/^([0-9a-zA-Z]([-_.\w]*[0-9a-zA-Z_])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/', $test_string)) { echo 'OK'; } else { echo 'Failed'; }
Adres URL
Czyli format adresowania zasobów internetowych najczęściej kojarzony z adresami stron www. Adres ten możemy rozbić na następujące części:
- rodzaj protokołu - (http|https|file)
- opcjonalna nazwa użytkownika i hasło - (\w*:\w*@)?
- nazwa hosta - [-\w.]+
- opcjonalny numer portu - (:\d+)?
- ścieżka dostępu - (/([\w/_.]*
- zapytanie - (\?\S+)?
Poprawność URLa możemy sprawdza następujący kawałek kodu:
$test_string = "http://login:haslo@www.rogozinski.net:80/admin/test.php?action=edit&id=166"; if (preg_match("/^(http|https|file):\/\/(\w*:\w*@)?[-\w.]+(:\d+)?(\/([\w\-\.\/]*(\?\S+)?)?)?$/", $test_string)) { echo 'OK'; } else { echo 'Failed'; }
Adres IP
W wydaniu IPv4, są to cztery liczby od 0 do 255 oddzielone kropkami.
$test_string = "255.255.255.0"; if preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/', $test_string)) { echo 'OK'; } else { echo 'Failed'; }
Data i godzina (w formacie 24H)
$string = '2007-02-15 03:15'; if (preg_match('/^([0-9]{4}-[0-9]{2}-[0-9]{2})\s((0{0,1}[0-9])|(1[0-9])|([2][0-4])):([0-5][0-9])$/', $string)) { echo 'OK'; } else { echo 'Failed'; }
Kod pocztowy
$test_string = '05-324'; if (preg_match('/^[0-9]{2}[-]([0-9]{3})?$/', $test_string)) { echo 'OK'; } else { echo 'Failed'; }
Wszystkie przykłady wyświetlają napis ‘OK’ w razie prawidłowego rozpoznania wzorca i ‘Failed’ w razie porażki.
Warto zobaczyć:


