[PHP] Walidacja danych, część 1

Data dodania wpisu: 27-05-2010

Dzisiaj zaserwuję kilka prostych preg_match'y do filtrowania danych, np. z formularzy. Wśród filtrów znajdą się takie jak:

  • walidacja poprawności adresu email,
  • walidacja kodu pocztowego,
  • walidacja numeru telefonu w kilku wariantach,

W kolejnych częściach na ten temat zaserwuję nieco bardziej złożone funkcje walidacji (walidacja numeru NIP - w tym numeru NIP EU, walidacja numeru REGON, walidacja numeru dowodu osobistego - wszystko z wykorzystaniem poprawnych wag kolejnych liter/liczb w kodzie). Zatem po kolei - walidacja adresu email - najpopularniejsza walidacja danych w sieci, co by nie było;) Kto wie o co chodzi, nie potrzebuje tłumaczenia dotyczącego samego wyrażenia regularnego. Resztę odsyłam do poczytania na temat wyrażeń regularnych

function validateEmail($email){
            if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
                return false;
            return true;
        }

Dalej - walidacja kodu pocztowego - ją wystarczy oprzeć o ilość znaków numerycznych i ewentualne znaki przestankowe - myślniki. Dodatkowo umieściłem tutaj przykładowy warunek, który można sparametryzować i otrzymać wynik zależny od kraju:

function validatePostcode($postcode, $country='pl'){
            switch($country){
                case 'pl':  $exp = "/[0-9]{2}\-[0-9]{3}/";
                            break;
                case 'en':  $exp = "/[0-9]{5}/";
                            break;
                default:    $exp = "/[0-9]{2}\-[0-9]{3}/";
                            break;
            }
            if(!preg_match($exp,$postcode))
                return false;
            return true;
        }

Jedziemy dalej - walidacja numeru telefonu, z wykorzystaniem najpopularniejszych wariantów: (XX) XXX-XXX-XXX, XXX-XXX-XXX lub (XX) XXX-XX-XX.

function validatePhone($phone){
            $phone = preg_replace("/[^0-9\(\)]/","",$phone);
            if(!preg_match("/[0-9]{3}/",$phone) &&
               !preg_match("/\([0-9]{2}\)[0-9]{7}/",$phone) &&
               !preg_match("/\([0-9]{2}\)[0-9]{9}/",$phone))
                return false;
            return true;
        }
 

ZOBACZ TEŻ: Walidacja danych, część 2
Walidacja danych, część 3
Walidacja danych, część 4

Komentarze

I really appreiacte free, succinct, reliable data like this.
Comments closed...