PHP에서 mb_chr() 함수는 유니코드 코드 포인트(Unicode code point) 값에 해당하는 문자를 반환하는 데 사용됩니다. 이 함수는 지정된 인코딩 방식으로, 주어진 유니코드 코드 포인트 값에 대응하는 문자를 담은 문자열을 반환합니다.
문법(Syntax)
string mb_chr(int $codepoint, string $encoding)
매개변수(Parameters)
mb_chr() 함수는 $codepoint와 $encoding 두 개의 매개변수만 받습니다.
$codepoint − 변환하려는 유니코드 코드 포인트 값입니다. 예를 들어, U+1F418(코끼리 이모지 🐘)에 해당하는 값은 128024입니다.
$encoding − 사용할 문자 인코딩을 나타냅니다. 이 매개변수가 생략되거나 null로 지정되면 PHP 내부에 설정된 기본 문자 인코딩이 사용됩니다.
반환값(Return Values)
요청한 문자가 지정된 인코딩으로 표현 가능한 경우 해당 문자를 담은 문자열을 반환하고, 표현할 수 없거나 실패한 경우 false를 반환합니다.
참고: PHP 8.0부터는 encoding 매개변수에 null 허용(nullable)이 지원됩니다.
예제(Example)
<pre>
<?php
$str = [66, 64, 0x20AC, 128024];
foreach ($str as $str) {
var_dump(mb_chr($str, 'UTF-8'));
var_dump(mb_chr($str, 'ISO-8859-1'));
}
?>
</pre>실행 결과(Output)
string(1) "B" string(1) "B" string(1) "@" string(1) "@" string(3) "€" bool(false) string(4) "🐘" bool(false)
결과 분석
위 예제에서 각 코드 포인트 값은 다음과 같이 처리됩니다.
66 → UTF-8과 ISO-8859-1 모두에서 문자 "B"가 반환됩니다.
64 → 두 인코딩 모두에서 문자 "@"가 반환됩니다.
0x20AC(유로화 기호 €) → UTF-8에서는 정상적으로 반환되지만, ISO-8859-1에서는 해당 기호를 표현할 수 없어 false가 반환됩니다.
128024(코끼리 이모지 🐘) → UTF-8에서는 정상 반환되지만, ISO-8859-1에서는 표현 불가능하여 false가 반환됩니다.
참고: PHP의 IntlChar::chr() 함수를 사용해도 유니코드 코드 포인트를 문자로 변환할 수 있습니다. 다국어나 이모지처럼 다양한 문자 체계를 다룰 때는 UTF-8 인코딩을 사용하는 것이 가장 안전합니다.