728x90
안녕하세요,
오늘은 php에서 입력값을 검증하는 방법인 preg_match()와 ctype 함수에 대해 알아보겠습니다.
preg_match()
preg_match() 함수는 "정규 표현식(Regex, Regular Expression)"을 사용하여 문자열이 특정 패턴과 일치하는지 검사하는 함수입니다.
<문법>
preg_match(정규식, 문자열)
- 일치하면 1 반환, 일치하지 않으면 0 반환
- 오류가 발생하면 false 반환
<preg_match() 사용 예시>
1. 이메일 검증
$email1 = "user@example.com";
$email2 = "userexample.com"; // '@' 없음
$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email1)) {
echo "이메일 1 - 성공: 올바른 이메일 형식입니다.<br>";
} else {
echo "이메일 1 - 실패: 잘못된 이메일 형식입니다.<br>";
}
if (preg_match($pattern, $email2)) {
echo "이메일 2 - 성공: 올바른 이메일 형식입니다.<br>";
} else {
echo "이메일 2 - 실패: 잘못된 이메일 형식입니다.<br>";
}
결과
이메일 1 - 성공: 올바른 이메일 형식입니다.
이메일 2 - 실패: 잘못된 이메일 형식입니다.
2. 전화번호 검증 : 정규 표현식을 활용하여 숫자 개수와 하이픈(-) 유무까지 검증 가능
$phone1 = "010-1234-5678";
$phone2 = "1234-5678"; // 010 없음
$pattern = "/^01[0-9]-\d{3,4}-\d{4}$/";
if (preg_match($pattern, $phone1)) {
echo "phone1 성공: 올바른 전화번호 형식입니다.<br>";
} else {
echo "phone1 실패: 잘못된 전화번호 형식입니다.<br>";
}
if (preg_match($pattern, $phone2)) {
echo "phone2 성공: 올바른 전화번호 형식입니다.<br>";
} else {
echo "phone2 실패: 잘못된 전화번호 형식입니다.<br>";
}
결과
phone1 성공: 올바른 전화번호 형식입니다.
phone2 실패: 잘못된 전화번호 형식입니다.
3. 비밀번호 검증 (최소 8자, 대문자/소문자/숫자/특수문자 포함)
$password1 = "P@ssw0rd!";
$password2 = "P@srd!";
$pattern = "/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/";
if (preg_match($pattern, $password1)) {
echo "password1 형식에 맞는 비밀번호입니다.<br>";
} else {
echo "password1 비밀번호는 8자 이상, 대소문자, 숫자, 특수문자를 포함해야 합니다.<br>";
}
if (preg_match($pattern, $password2)) {
echo "password2형식에 맞는 비밀번호입니다.<br>";
} else {
echo "password2 비밀번호는 8자 이상, 대소문자, 숫자, 특수문자를 포함해야 합니다.<br>";
}
결과
password1 형식에 맞는 비밀번호입니다.
password2 비밀번호는 8자 이상, 대소문자, 숫자, 특수문자를 포함해야 합니다.
ctype 함수
PHP에서는 ctype_ 접두사를 사용하는 다양한 ctype 함수들을 제공하고 있습니다.
ctype 함수들은 입력값이 특정한 문자 유형(숫자, 알파벳, 공백 등)인지 검사하는 역할을 합니다.
<문법>
ctype_XXX(문자열)
- 문자열이 해당 조건을 만족하면 true 반환, 그렇지 않으면 false 반환
<ctype 함수 종류 및 사용예시>
함수명 | 설명 | 사용예시 |
ctype_alnum() | 영숫자(A-Z, a-z, 0-9)만 포함 여부 | "abc123" true "abc@" false |
ctype_alpha() | 알파벳(A-Z, a-z)만 포함 여부 | "Hello" true "Hello123" false |
ctype_digit() | 숫자(0-9)만 포함 여부 | "12345" true "123a" false |
ctype_xdigit() | 16진수 문자(0-9, A-F, a-f)만 포함 여부 | "1F3A" true "G123" false |
ctype_lower() | 소문자(a-z)만 포함 여부 | "hello" true "Hello" false |
ctype_upper() | 대문자(A-Z)만 포함 여부 | "HELLO" true "Hello" false |
ctype_space() | 공백(스페이스, 탭, 줄바꿈)만 포함 여부 | " " true " a " false |
ctype_cntrl() | 제어 문자(ASCII 0~31)만 포함 여부 | "\n\t" true "abc" false |
ctype_graph() | 출력 가능한 문자(공백 제외)만 포함 여부 | "Hello!" true "Hello " false |
ctype_print() | 출력 가능한 문자(공백 포함)만 포함 여부 | "Hello " true "\nHello" false |
ctype_punct() | 특수문자만 포함 여부 | "!@#$%" true "abc!" false |
ctype_ascii() | ASCII 문자(0-127)만 포함 여부 | "Hello" true "안녕하세요" false |
'PHP' 카테고리의 다른 글
[PHP] 입력값 검증 방법 (1) filter_var() (0) | 2025.03.16 |
---|---|
[PHP] PDO를 이용한 데이터베이스 트랜잭션 처리 (0) | 2024.07.31 |
[PHP]다른 파일 내용을 특정 php 파일에 포함하여 실행시키기 (0) | 2024.07.16 |
[PHP]shapefile 데이터 읽기 (0) | 2024.06.24 |
[PHP] `->` 연산자 사용법 (0) | 2024.06.20 |