Peach's CODE peach

공부한 내용을 정리중입니다. 틀린 내용이 있을 수 있습니다 : )

코딩하는 딱복

[PHP] 유효성 검사 본문

Backend ⚙️/PHP

[PHP] 유효성 검사

yundi 2024. 1. 3. 11:38

웹애플리케이션을 제작할 때 절대 절대 빼놓을 수 없는 것 중 하나는 바로 유효성 검사이다!!

프로젝트할 때도 유효성 검사 때문에 회원가입을 이틀동안 구현한 적도 있다,,,(디자인 포함)

자주 쓰는 만큼 패턴을 블로그에 정리해서 익숙해져서 찾아보지 않도록 해야겠다..!

 

우선 php에는 preg_match() 메소드가 있다.

preg_match()
주어진 정규 표현식 패턴을 사용하여 문자열 내에서 일치(match)하는 부분을 찾아내는 함수

 

✔️ 전화번호 유효성 검사

php에서는 preg_match(정규표현식 패턴, 문자열, $matches) 에서 $matches는 배열로 선언하지 않아도 배열로 인식된다.

$pattern = '/^(010|011|016|017|018|019)-[^0][0-9]{3,4}-[0-9]{4}/';
$str = '010-4589-4536';

if(preg_match($pattern, $str, $matches)) {
    echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
    echo "<pre>";
    var_dump($matches);
    echo "</pre>";
} else {
    echo "값에 숫자외의 문자가 있는지 확인 요망";
}

var_dump()는 구조 출력하는 함수

휴대전화번호 유효성 검사하기
값 010-4589-4536은(는) 정규식 표현에 적합한 값입니다.

array(2) {
  [0]=>
  string(13) "010-4589-4536"
  [1]=>
  string(3) "010"
}

✔️ 이메일 유효성 검사

echo "<b>이메일 주소 유효성 검사하기</b><br>";
$pattern = '/^[a-zA-Z]{1}[a-zA-Z0-9.\-_]+@[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.(([a-z]{1}[a-z.]+[a-z]{1})|([a-z]+))$/';
$str = 'mybookforweb@gmail.com';

if(preg_match($pattern, $str, $matches)) {
    echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
    echo "<pre>";
    var_dump($matches);
    echo "</pre>";
} else {
    echo "이메일 주소 유효성에 맞지 않습니다.";
}

이메일 주소 유효성 검사하기
값 mybookforweb@gmail.com은(는) 정규식 표현에 적합한 값입니다.

array(3) {
  [0]=>
  string(22) "mybookforweb@gmail.com"
  [1]=>
  string(3) "com"
  [2]=>
  string(3) "com"
}

 

 

그 다음에는 filter_Var() 메소드가 있는데, 따로 정규 패턴식을 적어주지 않아도 되어서 편리하다. 상수에서 마지막 값만 변경해주면 된다. 다음은 filter_Var()에 대한 메뉴얼이 정리된 사이트이다.

https://www.php.net/manual/en/filter.filters.validate.php

 

PHP: Validate filters - Manual

Contrary to what documentation implies, the FILTER_NULL_ON_FAILURE seem to affect any validation filter, not just FILTER_VALIDATE_BOOLEAN. I've been using that since PHP 5.2, and as of PHP 5.6.8 it still works. I have no clue if it's a blug or if it is as

www.php.net

 

filter_Var()
preg_match()처럼 filter_Var()는 정규식 패턴을 지정하지 않아도 유효성 검사를 할 수 있게 해주는 함수
filter_Var('검사할 값',FILTER_VALIDATE_[URL | IP | EMAIL | INT |  FLOAT]) 

✔️ URL 유효성 검사 

echo "<b>URL 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_URL);</b><br>";
function checkUrl($url) {
    $urlCheck = filter_Var($url, FILTER_VALIDATE_URL);

    $returnInfo = false;
    if($urlCheck) {
        $returnInfo = true;
    }

    return $returnInfo;
}

if(checkUrl($url)) {
    echo "{$url}는 올바른 URL 입니다.";
} else {
    echo "{$url}는 잘못된 URL 입니다.";
}

URL 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_URL);
http://www.tomodevel.jp는 올바른 URL 입니다.

 

✔️ IP 유효성 검사

echo "<b>IP주소 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_IP);</b><br>";
$ip = "192.168.0.1";
$ipCheck = filter_Var($ip, FILTER_VALIDATE_IP);

if($ipCheck) {
    echo "{$ip}는 올바른 ip입니다.";
}else {
    echo "{$ip}는 잘못된 ip입니다.";
}

IP주소 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_IP);
192.168.0.1는 올바른 ip입니다.

 

✔️ 숫자 유효성 검사

echo "<b>정수 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_INT);</b><br>";
function checkInt($int) {
    $intCheck = filter_Var($int, FILTER_VALIDATE_INT);
    if($intCheck) {
        echo "{$int}는 정수입니다.";
    } else {
        echo "{$int}는 정수가 아닙니다.";
    }
    echo "<br>";
}

checkInt(46);
checkInt(1.2);
checkInt('hello');

echo "<br><br>";
echo "<b>실수 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_FLOAT);</b><br>";
$float = "192.12";
$floatCheck = filter_Var($float, FILTER_VALIDATE_FLOAT);

if($floatCheck) {
    echo "{$float}는 실수입니다.";
}else {
    echo "{$float}는 실수가 아닙니다.";
}

정수 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_INT);
46는 정수입니다.
1.2는 정수가 아닙니다.
hello는 정수가 아닙니다.

실수 유효성 검사하기-> filter_Var('검사할 값', FILTER_VALIDATE_FLOAT);
192.12는 실수입니다.

 



'Backend ⚙️ > PHP' 카테고리의 다른 글

[PHP] DB에 저장된 데이터 출력하기  (2) 2024.01.03
[PHP] 상속  (2) 2024.01.03
[PHP] 시간 관련 함수  (2) 2024.01.02
[PHP] 문자열 관련 함수  (0) 2024.01.02
[PHP] 작업 경로 맞추기  (2) 2024.01.01