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

DDD
Lepaskan: 2024-10-31 18:00:15
asal
236 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!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!