IntlChar::isxdigit() 함수란?
PHP의 IntlChar::isxdigit() 함수는 주어진 입력 문자가 16진수(hexadecimal) 숫자에 해당하는지 여부를 확인하는 함수입니다. 이 함수는 국제화 확장 모듈(Intl)에 포함되어 있으며, 다양한 유니코드 문자를 처리할 수 있다는 점이 특징입니다.
IntlChar::isxdigit()가 참(TRUE)으로 판정하는 16진수 문자는 다음과 같습니다.
- 숫자 0부터 9까지
- 영문 소문자 a ~ f
- 영문 대문자 A ~ F
- 유니코드 코드 포인트 \u{0041} ~ \u{0046} (대문자 A~F)
- 유니코드 코드 포인트 \u{0061} ~ \u{0066} (소문자 a~f)
- 전각 영문자 \u{FF21} ~ \u{FF26}, \u{FF41} ~ \u{FF46}
문법(Syntax)
IntlChar::isxdigit( val )
매개변수(Parameters)
- val − 검사할 대상 값으로, 정수(integer) 또는 UTF-8로 인코딩된 문자열을 사용할 수 있습니다.
반환값(Return)
입력값 val이 16진수 숫자라면 TRUE(bool(true))를 반환하고, 그렇지 않으면 FALSE(bool(false))를 반환합니다.
예제 1: 기본 사용법
다음은 IntlChar::isxdigit() 함수의 기본적인 사용 예시입니다.
var_dump(IntlChar::isxdigit("10"));
echo "<br>";
// 문자 타입 입력
var_dump(IntlChar::isxdigit("A"));
echo "<br>";
var_dump(IntlChar::isxdigit("a"));
echo "<br>";실행 결과:
bool(true) NULL bool(true)
참고: 첫 번째 예제에서 두 자리 문자열 "10"을 입력하면 NULL이 출력됩니다. 이는 IntlChar::isxdigit()가 단일 문자만 판별하기 때문입니다. 반드시 한 글자씩 검사해야 정확한 결과를 얻을 수 있습니다.
예제 2: 유니코드 및 일반 문자 판별
유니코드 이스케이프 시퀀스와 일반 문자를 함께 테스트한 예제입니다.
<?php
var_dump(IntlChar::isxdigit("u{0041}"));
echo "<br>";
var_dump(IntlChar::isxdigit("k"));
echo "<br>";
var_dump(IntlChar::isxdigit("9"));
echo "<br>";
?>실행 결과:
bool(true) bool(false) bool(true)
위 결과에서 볼 수 있듯이, 16진수에 해당하는 'A'와 '9'는 true를 반환하지만, 16진수 범위 밖의 알파벳 'k'는 false를 반환합니다.
활용 시 주의사항
- 함수에는 단일 문자 또는 단일 코드 포인트만 전달해야 합니다.
- 문자열 형태로 전달할 경우 UTF-8 인코딩이어야 합니다.
- 전각 문자(\u{FF21} 등)도 16진수로 인정되므로, 다국어 환경에서 유효성 검사를 할 때 유용합니다.
마무리
IntlChar::isxdigit() 함수는 16진수 문자 유효성 검사가 필요한 상황, 예를 들어 색상 코드(#FFFFFF), 메모리 주소, 데이터 인코딩 검증 등을 처리할 때 매우 편리하게 활용할 수 있습니다. 일반 ASCII 문자뿐 아니라 전각 문자까지 지원하므로 국제화(i18n) 프로젝트에서 특히 유용합니다.