PHP での UTF-8 文字の UCS-2 コード ポイントの決定
当面のタスクは、UCS-2 コード ポイントを抽出することです指定された UTF-8 文字列内の文字の場合。これを実現するには、カスタム PHP 関数を定義できます。
まず、UTF-8 エンコード スキームを理解することが重要です。各文字は、Unicode コード ポイントに応じて 1 ~ 4 バイトのシーケンスで表されます。各バイト サイズの範囲は次のとおりです。
文字あたりのバイト数を決定するには、最初のバイトを調べます:
バイト数決定後、ビット操作を使用してコードを抽出できます。 point.
カスタム PHP 関数:
上記の分析に基づいて、単一の UTF-8 文字を入力として受け取り、その UCS を返すカスタム PHP 関数を次に示します。 2 コードポイント:
<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 中国語 Web サイトの他の関連記事を参照してください。