안녕하세요 워누입니다😀
오늘은 지난번 정규표현식 2번째 포스팅에서 언급했던 filter_var() 함수에 대하여 포스팅해보고자 합니다!
(이메일 유효성 검사를 하는 방법으로 정규표현식과 함께 소개하였으며 자세한 내용은 아래 링크로!!)
[PHP] 전화번호, 이메일 유효성 검사 :: 정규표현식 활용 (2)
안녕하세요 워누입니다😀 지난 포스팅에 이어 오늘은 전화번호와 이메일 데이터에 대하여 정규표현식을 이용해 유효성을 검사해보는 방법을 포스팅해보겠습니다! 1. 전화번호 전화번호의 유
seoneu.tistory.com
PHP에서 제공하는 filter_var() 함수는 특정한 값을 검사하는 함수로,
두 번째 매개변수의 값에 따라 검사할 유형을 다르게 설정할 수 있습니다.
아래와 같은 형식으로 사용할 수 있습니다
filter_var('검사할 값', 검사할 유형, (옵션));
'검사할 값'은 말 그대로 검사를 받을 대상(값)을 의미하며,
'검사할 유형' 은 어떤 형식으로 검사할 건지를 결정할 수 있습니다!
검사할 유형에 따라 옵션을 사용할 수 있으며 자세한 내용은 아래 표를 참고해주세요🙂
파라미터(Parameter) | 검사 유형 | 설명(Discription) |
FILTER_VALIDATE_BOOLEAN FILTER_VALIDATE_BOOL |
Bool | '1', 'true', 'on', 'yes'라는 데이터를 검사하면 'TRUE'를 응답합니다. 이외의 다른 값은 'FALSE'를 응답합니다. *PHP 8 버전에서 추가된 파라미터입니다. |
FILTER_VALIDATE_DOMAIN | 도메인 | 입력된 값이 도메인 형식인지 검사합니다. (예시 : http://test.domain.com) 도메인 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. *PHP 7 버전에서 추가된 파라미터입니다. |
FILTER_VALIDATE_EMAIL | 이메일 | 입력된 값이 이메일 형식인지 검사합니다. (예시 : id@testmail.com) 이메일 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. <옵션 파라미터 및 설명> FILTER_FLAG_EMAIL_UNICODE : 이메일 주소 중 로컬(예시 중 'testmail'에 해당하는 부분)에 유니코드 문자를 포함하여 검사하는 옵션입니다. |
FILTER_VALIDATE_FLOAT | 실수 | 입력된 값이 실수 형식인지 검사합니다. (예시: 3.4, 12.01 ...) 이메일 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. <옵션 파라미터 및 설명> FILTER_FLAG_ALLOW_THOUSAND : 1000 단위 숫자를 콤마( , ) 기호로 구분합니다. |
FILTER_VALIDATE_INT | 정수 | 입력된 값이 10진수 정수 형식인지 검사합니다. (예시 : 1, 52, -4 ...) 이메일 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. <옵션 파라미터 및 설명> FILTER_FLAG_ALLOW_OCTAL : 입력된 값을 8진수로 검증하는 옵션입니다. 입력된 값이 0으로 시작하는 8진수의 데이터라면 TRUE를 응답하고, 아니라면 'FALSE'를 응답합니다. FILTER_FLAG_ALLOW_HEX : 입력된 값을 16진수로 검증하는 옵션입니다. 입력된 값이 0x 혹은 0X으로 시작하는 16진수의 데이터라면 TRUE를 응답하고, 아니라면 'FALSE'를 응답합니다. |
FILTER_VALIDATE_IP | 아이피 | 입력된 값이 IP(default : IPv4) 형식인지 검사합니다. (예시 : 192.168.0.101) 이메일 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. <옵션 파라미터 및 설명> FILTER_FLAG_IPV4 : IP를 IPv4 형식으로 검사하는 옵션입니다. FILTER_FLAG_IPV6 : IP를 IPv6 형식으로 검사하는 옵션입니다. |
FILTER_VALIDATE_MAC | 맥(MAC) 주소 | 입력된 값이 맥(MAC) 주소 형식인지 검사합니다. (예시 : 00-FF-2D-72-E8-F0) 맥 주소 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. |
FILTER_VALIDATE_REGEXP | 정규식(Perl 호환) | 입력된 값이 정규식 형식인지 검사합니다. 정규식 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. |
FILTER_VALIDATE_URL | URL | 입력된 값이 URL 형식인지 검사합니다. (예시 : http://test.domain.com) URL 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다. <옵션 파라미터 및 설명> FILTER_FLAG_SCHEME_REQUIRED : 입력 URL의 RFC를 준수하였는지 검사하는 옵션입니다. (예시 : http://example) FILTER_FLAG_HOST_REQUIRED : 입력 URL의 호스트 이름이 포함되어 있는지 검사하는 옵션입니다. (예시 : http://test.domain.com) FILTER_FLAG_PATH_REQUIRED : 입력 URL의 도메인 이름 뒤에 경로가 있는지 검사하는 옵션입니다. (예시 : http://test.domain.com/example/). FILTER_FLAG_QUERY_REQUIRED : 입력 URL의 쿼리 문자열이 있는지 검사하는 옵션입니다.(예: http://test.domain.com/example/test.php?query=value). |
제가 알아보기 쉽게 작성한 내용이다 보니
위 표의 내용에 대하여 더 자세히 알고 싶으시다면 PHP에서 제공하는 매뉴얼을 참고해주시면 됩니다.
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
그럼 이제 예시 코드를 보실까요?
간단하게 IP 검증하는 방법과 URL 검증하는 것 두 개 정도만 한번 보도록 하겠습니다!
(이번에는 요청-응답 페이지 없이 PHP 파일만 보여드리겠습니다🙂)
IP는 다음과 같이 검증합니다!
<?php
// 검증할 IP
$checkIP = "192.168.0.101" ;
// 검증
if (filter_var($checkIP, FILTER_VALIDATE_IP)) {
echo $checkIP."은 정상적인 IP입니다.";
} else {
echo "올바르지 않은 IP를 입력하셨습니다.";
}
?>
위 소스코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
IP가 정상적으로 검증된 것을 볼 수 있습니다ㅎㅎ
검증하는 값이 IP 형식과 맞지 않다면 "올바르지 않은 IP를 입력하셨습니다."라고 나오겠죠?
다음으로 URL을 검증해봅시다!
<?php
// 검증할 URL
$checkUrl = "http://test.domain.com";
// 검증
if (filter_var($checkUrl, FILTER_VALIDATE_URL)) {
echo $checkUrl."은 정상적인 url입니다.";
} else {
echo "올바르지 않은 url을 입력하셨습니다.";
}
?>
위 소스코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
마지막으로 URL 검증할 때 사용할 수 있는 옵션을 적용해보겠습니다!
표에 소개된 URL 추가 검증 옵션 중 "FILTER_FLAG_QUERY_REQUIRED"를 사용하여 검증해봅시다!!
<?php
// 검증할 URL+Qurey
$checkUrl = "http://test.domain.com/example/test.php?query=value" ;
// 검증
if (filter_var($checkUrl, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED )) {
echo $checkUrl."은 정상적인 url입니다.";
} else {
echo "올바르지 않은 url을 입력하셨습니다.";
}
?>
위 소스코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
세번째 매개변수에 옵션을 넣어서 검증된 것을 볼 수 있습니다!
위 내용을 활용하여 PHP로 개발된 웹 페이지에서 특정 IP를 전달받는 경우, 회원가입 페이지를 구성하여 이메일을 검증하거나 숫자로 된 데이터(나이, 생년월일, 휴대폰 번호 등)를 검증하는 경우 등 나름 쓸만한 구석이 있을 것 같네요 ㅎㅎ
이 글을 읽어주시는 분들께서도 도움이 되었기를 바라며, 오늘 포스팅은 여기서 마무리하겠습니다😁

'PHP' 카테고리의 다른 글
[PHP] 전화번호, 이메일 유효성 검사 :: 정규표현식 활용 (2) (0) | 2022.01.12 |
---|---|
[PHP] 값에 대한 패턴(유효성) 체크 :: 정규표현식 활용 (1) (0) | 2022.01.10 |
[PHP] 다른 서버로 파일을 전송하는 방법!? (0) | 2021.12.20 |
Bitnami WAMP 스택을 이용해서 PHP 한번에 설치하기! (0) | 2021.08.22 |
[PHP] 비교 연산자 ==, === ...? !=,!==....? (0) | 2021.07.12 |