Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP mb_chr() 함수 활용법 – 유니코드 코드 포인트를 문자로 변환하는 방법

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 인코딩을 사용하는 것이 가장 안전합니다.