그래핌(Grapheme)은 문자 체계에서 가장 작은 기능적 단위를 의미합니다. 쉽게 말해, 소리에 대응하는 가장 작은 글자의 단위라고 이해할 수 있습니다. 예를 들어 한글의 '가'나 영어의 알파벳 하나하나가 그래핌에 해당합니다.
PHP의 grapheme_strlen() 함수는 문자열의 길이를 그래핌 단위로 계산하여 반환하는 함수입니다. 일반적인 strlen() 함수처럼 바이트(byte) 수를 세는 것이 아니라, 사람이 인식하는 문자 단위로 길이를 측정한다는 점이 핵심입니다. 특히 결합 문자(combining character)나 발음 구별 기호(diacritical mark)가 포함된 유니코드 문자열을 다룰 때 매우 유용합니다.
이 함수는 PHP 5.3.0 버전부터 지원되며, intl 확장 모듈이 활성화되어 있어야 사용할 수 있습니다.
문법 (Syntax)
integer grapheme_strlen($str_string)
매개변수 (Parameters)
grapheme_strlen() 함수는 하나의 매개변수만 받습니다.
$str_string – 길이를 측정하고자 하는 문자열입니다. 반드시 UTF-8로 인코딩된 문자열이어야 합니다.
반환 값 (Return Values)
함수가 성공적으로 실행되면 해당 문자열의 그래핌 단위 길이를 정수(integer)로 반환하며, 실패할 경우 false를 반환합니다.
예제 (Example)
<?php
// "abca\xCC\x8Ao\xCC\x88a\xCC\x8A\x122" 문자열의 길이를 측정합니다.
// \xCC\x8A와 \xCC\x88은 결합 문자(발음 기호)입니다.
$integer = grapheme_strlen("abca\xCC\x8Ao\xCC\x88a\xCC\x8A\x122");
// 결과 출력
var_dump($integer);
?>
실행 결과 (Output)
int(8)
위 예제에서 문자열에는 결합 문자가 여러 개 포함되어 있지만, grapheme_strlen()은 이를 독립된 문자로 분리하지 않고 하나의 그래핌으로 취급하기 때문에 결과값으로 8을 반환합니다. 만약 strlen() 함수를 사용했다면 바이트 수가 계산되어 훨씬 큰 값이 나왔을 것입니다.
활용 팁
다국어 서비스나 이모지(emoji), 악센트가 포함된 텍스트를 처리하는 애플리케이션에서는 strlen() 대신 grapheme_strlen()을 사용하는 것이 좋습니다. 이렇게 하면 사용자에게 실제로 보이는 문자 개수와 일치하는 정확한 길이 값을 얻을 수 있습니다.