>  기사  >  백엔드 개발  >  PHP의 UTF-8 문자에서 UCS-2 코드 포인트를 추출하는 방법은 무엇입니까?

PHP의 UTF-8 문자에서 UCS-2 코드 포인트를 추출하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-31 18:00:15241검색

How to Extract UCS-2 Code Points from UTF-8 Characters in PHP?

PHP에서 UTF-8 문자에 대한 UCS-2 코드 포인트 결정

현재 작업은 UCS-2 코드 포인트를 추출하는 것입니다. 주어진 UTF-8 문자열 내의 문자에 대해. 이를 달성하려면 사용자 정의 PHP 함수를 정의할 수 있습니다.

먼저 UTF-8 인코딩 체계를 이해하는 것이 중요합니다. 각 문자는 유니코드 코드 포인트에 따라 1~4바이트의 시퀀스로 표시됩니다. 각 바이트 크기의 범위는 다음과 같습니다.

  • 0xxxxxxx: 1바이트
  • 110xxxxx 10xxxxxx: 2바이트
  • 1110xxxx 10xxxxxx 10xxxxxx: 3바이트
  • 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx: 4바이트

문자당 바이트 수를 확인하려면 첫 번째 바이트를 확인하세요.

  • 0: 1바이트 문자
  • 110: 2바이트 문자
  • 1110: 3바이트 문자
  • 11110: 4바이트 문자
  • 10: 연속 바이트
  • 11111: 잘못된 문자

바이트 수가 결정되면 비트 조작을 사용하여 코드 포인트를 추출할 수 있습니다.

사용자 정의 PHP 함수:

기반 위 분석에서 단일 UTF-8 문자를 입력으로 사용하고 UCS-2 코드 포인트를 반환하는 사용자 정의 PHP 함수는 다음과 같습니다.

<code class="php">function get_ucs2_codepoint($char)
{
    // Initialize the code point
    $codePoint = 0;

    // Get the first byte
    $firstByte = ord($char);

    // Determine the number of bytes
    if ($firstByte < 128) {
        $bytes = 1;
    } elseif ($firstByte < 192) {
        $bytes = 2;
    } elseif ($firstByte < 224) {
        $bytes = 3;
    } elseif ($firstByte < 240) {
        $bytes = 4;
    } else {
        // Invalid character
        return -1;
    }

    // Shift and extract code point
    switch ($bytes) {
        case 1:
            $codePoint = $firstByte;
            break;
        case 2:
            $codePoint = ($firstByte & 0x1F) << 6;
            $codePoint |= ord($char[1]) & 0x3F;
            break;
        case 3:
            $codePoint = ($firstByte & 0x0F) << 12;
            $codePoint |= (ord($char[1]) & 0x3F) << 6;
            $codePoint |= ord($char[2]) & 0x3F;
            break;
        case 4:
            $codePoint = ($firstByte & 0x07) << 18;
            $codePoint |= (ord($char[1]) & 0x3F) << 12;
            $codePoint |= (ord($char[2]) & 0x3F) << 6;
            $codePoint |= ord($char[3]) & 0x3F;
            break;
    }

    return $codePoint;
}</code>

사용 예:

이 기능을 사용하려면 UTF-8 문자를 입력으로 제공하세요.

<code class="php">$char = "ñ";
$codePoint = get_ucs2_codepoint($char);
echo "UCS-2 code point: $codePoint\n";</code>

출력:

UCS-2 code point: 241

위 내용은 PHP의 UTF-8 문자에서 UCS-2 코드 포인트를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.