Language/PHP

[PHP] filter_var 함수로 유효성 처리하기

DevL1 2023. 6. 15. 01:43

PHP의 filter_var 함수는 데이터를 필터링하고, 데이터의 유효성을 검사하는 데 사용되는 함수입니다.

이 함수는 여러 가지 필터를 사용하여 데이터의 유효성을 검사하거나, 데이터를 특정 형식으로 정제하는 데 활용할 수 있습니다.

filter_var() - 지정된 필터로 변수를 필터링합니다.

filter_var(mixed $value, int $filter=FILTER_DEFAULT, array|int $options = 0): mixed

 

  • $value: 필터링하거나 검사할 값
  • $filter: 사용할 필터의 ID
  • $options: 필터에 추가적인 옵션을 제공(필터에 따라 사용하는 옵션이 다릅니다)

 

Filter

검증 필터
설명
FILTER_VALIDATE_BOOLEAN
해당 변수가 "1", "true", "on", "yes"인 경우에만 true를 반환하고, 나머지는 전부 false를 반환함.
FILTER_VALIDATE_EMAIL
해당 변수가 유효한 이메일 주소인지를 검증함.
FILTER_VALIDATE_FLOAT
해당 변수가 float 타입인지를 검증함.
FILTER_VALIDATE_INT
해당 변수가 int 타입인지를 검증함.
FILTER_VALIDATE_IP
해당 변수가 유효한 IP 주소인지를 검증함.
FILTER_VALIDATE_MAC
해당 변수가 유효한 MAC 주소인지를 검증함.
FILTER_VALIDATE_REGEXP
해당 변수를 펄 호환 정규 표현식(Perl-Compatible Regular Expression, PCRE)으로 검증함.
FILTER_VALIDATE_URL
해당 변수가 유효한 URL 주소인지를 검증함.

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

 

 

  • URL 유효성 검사
$url = "http://www.example.com";

if (filter_var($url, FILTER_VALIDATE_URL)) {
    echo "유효한 URL입니다.";
} else {
    echo "유효하지 않은 URL입니다.";
}
  • 이메일 유효성 검사
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "유효한 이메일 주소입니다.";
} else {
    echo "유효하지 않은 이메일 주소입니다.";
}
  • IP 주소 검사
if (filter_var($ip, FILTER_VALIDATE_IP)) {
    echo "유효한 IP 주소입니다.";
} else {
    echo "유효하지 않은 IP 주소입니다.";
}
  • 정수 검사 및 범위 제한
$options = ["options" => ["min_range" => 1, "max_range" => 100]];

if (filter_var($number, FILTER_VALIDATE_INT, $options) !== false) {
    echo "유효한 숫자입니다.";
} else {
    echo "유효하지 않은 숫자입니다.";
}
  • 문자열 태그 제거
$str = "<h1>Hello World!</h1>";
$newStr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newStr; // 출력: Hello World!
  • Boolean 값으로 변환
$var = "yes";
$bool = filter_var($var, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
if ($bool !== null) {
    echo $bool ? "True" : "False"; // 출력: True
} else {
    echo "유효하지 않은 boolean 값입니다.";
}

특정 값이 true로 간주될 수 있는지 여부를 검사할 때 사용합니다. 'yes', 'true', '1'과 같은 값은 true로 변환됩니다.

  • 고급 옵션 사용 예시
$age = "20";
$options = array(
    "options" => array(
        "default" => 0, // 값이 유효하지 않을 때 반환되는 기본값
        "min_range" => 1,
        "max_range" => 100
    )
);

$validatedAge = filter_var($age, FILTER_VALIDATE_INT, $options);
echo $validatedAge; // 출력: 20

정수 유효성 검사를 수행하면서 범위를 지정하고, 기본 값을 설정하는 등의 고급 옵션을 사용할 수 있습니다.

 

주의할 점

filter_var 힘수는 불리언, 정수, 문자열과 같은 단일 값을 검사하거나 필터링 하는데 사용됩니다.

배열과 같은 복잡한 타입을 검사하려면 filter_var_array 함수를 사용해야 합니다.

 

어떤 필터들은 엄격한 유효성 검사를 수행하는 반면, 다른 필터들은 더 관대할 수 있습니다.

따라서 사용하는 필터의 문서를 잘 읽고, 어떻게 데이터가 처리될지 이해하는 것이 중요합니다.

 

 

 

 

 

 

 

Manual Filter: https://www.php.net/manual/en/filter.filters.validate.php
Manual filter_var: https://www.php.net/manual/en/function.filter-var.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

 

PHP: filter_var - Manual

note that FILTER_VALIDATE_BOOLEAN tries to be smart, recognizing words like Yes, No, Off, On, both string and native types of true and false, and is not case-sensitive when validating strings. outputs:'on': bool(true)'On': bool(true)'ON': bool(true)'off':

www.php.net

 

filter_var_array: https://devlevel1.tistory.com/26

 

[PHP] filter_var_array 데이터 검증 처리하기

filter_var_array() 함수는 PHP에서 여러 변수를 동시에 검증하고 필터링할 수 있는 유용한 기능입니다. 이 함수는 배열의 각 요소를 지정된 필터로 처리하여, 필터링되거나 검증된 데

devlevel1.tistory.com