Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengekstrak Mata Kod UCS-2 daripada Aksara UTF-8 dalam PHP?

Bagaimana untuk Mengekstrak Mata Kod UCS-2 daripada Aksara UTF-8 dalam PHP?

DDD
Lepaskan: 2024-10-31 18:00:15
asal
376 orang telah melayarinya

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

Menentukan Mata Kod UCS-2 untuk Aksara UTF-8 dalam PHP

Tugas yang ada ialah mengekstrak mata kod UCS-2 untuk aksara dalam rentetan UTF-8 yang diberikan. Untuk mencapai matlamat ini, fungsi PHP tersuai boleh ditakrifkan.

Pertama sekali, adalah penting untuk memahami skema pengekodan UTF-8. Setiap aksara diwakili oleh urutan 1 hingga 4 bait, bergantung pada titik kod Unicodenya. Julat untuk setiap saiz bait adalah seperti berikut:

  • 0xxxxxxx: 1 bait
  • 110xxxxx 10xxxxxx: 2 bait
  • 1110xxxx 10xxxxxx 10xxxxxx: 3 bait 🎜>11110xxx 10xxxxxx 10xxxxxx 10xxxxxx: 4 bait
  • Untuk menentukan bilangan bait setiap aksara, periksa bait pertama:

0: 1 bait aksara
  • 110: aksara 2 bait
  • 1110: aksara 3 bait
  • 11110: aksara 4 bait
  • 10: Bait sambungan
  • 11111: aksara tidak sah 🎜>
  • Setelah bilangan bait ditentukan, manipulasi bit boleh digunakan untuk mengekstrak titik kod.

Fungsi PHP Tersuai:

Berdasarkan pada analisis di atas, berikut ialah fungsi PHP tersuai yang mengambil satu aksara UTF-8 sebagai input dan mengembalikan titik kod UCS-2nya:

Contoh Penggunaan:
<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>
Salin selepas log masuk

Untuk menggunakan fungsi, hanya sediakan aksara UTF-8 sebagai input:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Mata Kod UCS-2 daripada Aksara UTF-8 dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan