PHP의 IntlChar::iscntrl() 함수는 주어진 입력값이 제어 문자(control character)인지 여부를 검사하는 데 사용됩니다. 제어 문자란 화면에 직접 표시되지 않고 특수한 동작을 수행하는 문자로, 대표적인 예로 줄 바꿈(\n), 탭(\t) 등이 있습니다.
문법(Syntax)
IntlChar::iscntrl( val )
매개변수(Parameters)
val − 검사할 값으로, 정수(integer) 또는 UTF-8로 인코딩된 문자열을 전달할 수 있습니다.
반환값(Return)
전달된 val이 제어 문자일 경우 TRUE를 반환합니다. 제어 문자가 아닌 경우에는 FALSE 또는 NULL을 반환하며, 유효하지 않은 입력에 대한 처리 결과는 아래 예제에서 확인할 수 있습니다.
예제 1
다음 예제는 다양한 입력값에 대해 IntlChar::iscntrl() 함수를 호출한 결과입니다.
<?php
var_dump(IntlChar::iscntrl("\n"));
echo "<br>";
var_dump(IntlChar::iscntrl("ahjh"));
echo "<br>";
var_dump(IntlChar::iscntrl("12345"));
?>출력 결과
bool(true) NULL NULL
위 결과에서 볼 수 있듯이, 줄 바꿈 문자(\n)는 제어 문자이므로 bool(true)가 반환됩니다. 반면 일반 문자열("ahjh")과 숫자 문자열("12345")은 단일 문자가 아니기 때문에 NULL이 반환됩니다. 참고로 IntlChar 계열의 함수는 기본적으로 단일 유니코드 코드 포인트를 기준으로 동작하므로, 여러 문자로 구성된 문자열을 전달하면 예상과 다른 결과가 나올 수 있습니다.
예제 2
이번에는 캐리지 리턴(\r)과 숫자 문자열을 입력값으로 사용하여 제어 문자 여부를 확인해 보겠습니다.
<?php
var_dump(IntlChar::iscntrl("\r"));
echo "<br>";
var_dump(IntlChar::iscntrl("878"));
echo "<br>";
?>출력 결과
bool(true) NULL
캐리지 리턴(\r) 역시 제어 문자에 해당하므로 bool(true)가 출력됩니다. 숫자로만 이루어진 문자열 "878"은 단일 제어 문자가 아니므로 NULL이 반환됩니다.
정리
- IntlChar::iscntrl() 함수는 PHP의 국제화(internationalization) 확장 모듈인 Intl 확장에서 제공됩니다.
- 줄 바꿈(\n), 탭(\t), 캐리지 리턴(\r) 같은 문자는 모두 제어 문자로 판별되어 TRUE를 반환합니다.
- 함수 사용 시에는 반드시 단일 문자(코드 포인트)를 전달해야 정확한 결과를 얻을 수 있습니다.