PHP의 ctype_xdigit() 함수는 주어진 문자열이 16진수(hexadecimal) 숫자로만 구성되어 있는지 검사하는 함수입니다. 문자열의 모든 문자가 10진수 숫자(0~9) 또는 [A-Fa-f] 범위의 영문자에 해당하면 TRUE를 반환하고, 하나라도 해당하지 않는 문자가 포함되어 있으면 FALSE를 반환합니다.
주요 활용 사례
이 함수는 사용자 입력값이 유효한 16진수 색상 코드(#FFFFFF 등의 값 부분)인지 확인하거나, 해시 값·16진수 인코딩 데이터의 형식을 검증할 때 유용하게 사용됩니다.
문법
ctype_xdigit(str)
매개변수
str − 검사할 대상 문자열입니다.
반환값
문자열의 모든 문자가 16진수 '숫자', 즉 10진수 숫자(0~9) 또는 [A-Fa-f] 범위의 문자라면 TRUE를 반환하고, 그 외의 경우에는 FALSE를 반환합니다. 참고로 빈 문자열을 전달하면 PHP 5.1 버전 이후부터는 항상 FALSE가 반환됩니다.
예제
다음은 ctype_xdigit() 함수의 동작을 보여주는 예제입니다.
<?php
$str = array('ABCD', 'AB768768ff');
foreach ($str as $a) {
if (ctype_xdigit($a)) {
echo "$a has all hexadecimal digits. \n";
} else {
echo "$a does not have all hexadecimal digits. \n";
}
}
?>출력 결과
ABCD has all hexadecimal digits. AB768768ff has all hexadecimal digits.
결과 해석
'ABCD'와 'AB768768ff' 두 문자열은 모두 숫자와 A~F 범위의 알파벳으로만 이루어져 있으므로, 두 경우 모두 유효한 16진수 문자열로 판별되어 TRUE가 반환됩니다. 만약 'G123'처럼 G 이상의 알파벳이나 특수문자가 포함된 문자열을 검사하면 FALSE가 반환됩니다.
함께 알아두면 좋은 함수
ctype_digit() − 문자열이 10진수 숫자로만 구성되어 있는지 검사합니다.
ctype_alnum() − 문자열이 영문자와 숫자로만 구성되어 있는지 검사합니다.
ctype_upper() / ctype_lower() − 문자열이 각각 대문자 또는 소문자로만 구성되어 있는지 검사합니다.