문자 타입 검사
문자 타입 검사 (Ctype)
입력이 숫자인지, 알파벳인지, 제어 문자인지 — 문자나 문자열이 특정 문자 클래스에 속하는지 확인할 때 아주 빠르고 간단한 방법이 있어요. Ctype 확장이 바로 그 역할을 합니다.
본문
Ctype 확장의 함수들은 현재 로케일(setlocale() 참고)에 따라 문자나 문자열이 특정 문자 클래스에 속하는지 확인합니다.
정수 인자로 호출하면 이 함수들은 ctype.h의 C 대응 함수들과 똑같이 동작해요. 256보다 작은 정수가 전달되면 그 값을 ASCII 값으로 사용해 지정 범위(숫자는 0x30-0x39)에 들어맞는지 봅니다. 숫자가 -128 이상 -1 이하라면 256을 더한 뒤 그 값으로 검사를 수행합니다.
Warning — PHP 8.1.0부터는 문자열이 아닌 인자를 전달하는 것이 deprecated 됐어요. 앞으로는 인자가 ASCII 코드포인트가 아니라 문자열로 해석될 예정입니다. 의도한 동작에 따라 인자를 문자열로 캐스팅하거나 명시적으로 chr()을 호출해야 해요.
문자열 인자로 호출하면 문자열의 모든 문자를 검사하고, 모든 문자가 요청 조건을 만족할 때만 true를 반환합니다. 빈 문자열로 호출하면 결과는 항상 false예요. 문자열이나 정수가 아닌 다른 것을 전달하면 즉시 false를 반환합니다.
왜 Ctype인가
Ctype 함수는 일반적으로 정규 표현식보다, 그리고 동등한 str_*, is_* 함수들보다 선호돼요. 그 이유는 Ctype이 네이티브 C 라이브러리를 사용해서 훨씬 빠르게 처리되기 때문입니다.
Note — Ctype 함수는 Python의 "ctypes" 라이브러리와 관련이 전혀 없어요. 확장 이름은 C 등가 함수들이 정의된 ctype.h C 헤더 파일에서 유래했습니다. 이 확장이 Python "ctypes"보다 먼저 있었으니, 이름 때문에 생기는 혼란은 PHP 탓이라고 보긴 어려워요.
Ctype 함수 일람
ctype_alnum— 영문자/숫자(알파뉴메릭) 문자 검사ctype_alpha— 영문자(알파벳) 문자 검사ctype_cntrl— 제어 문자 검사ctype_digit— 숫자 검사ctype_graph— 공백을 제외한 출력 가능 문자 검사ctype_lower— 소문자 검사ctype_print— 출력 가능 문자 검사ctype_punct— 공백·영문자·숫자를 제외한 출력 가능 문자 검사ctype_space— 공백 문자 검사ctype_upper— 대문자 검사ctype_xdigit— 16진수 문자 검사