Détermination des points de code UCS-2 pour les caractères UTF-8 en PHP
La tâche à accomplir est d'extraire les points de code UCS-2 pour les caractères d'une chaîne UTF-8 donnée. Pour ce faire, une fonction PHP personnalisée peut être définie.
Tout d'abord, il est important de comprendre le schéma d'encodage UTF-8. Chaque caractère est représenté par une séquence de 1 à 4 octets, selon son point de code Unicode. Les plages pour chaque taille d'octet sont les suivantes :
Pour déterminer le nombre d'octets par caractère, examinez le premier octet :
Une fois le nombre d'octets déterminé, bit la manipulation peut être utilisée pour extraire le point de code.
PHP personnalisé Fonction :
Sur la base de l'analyse ci-dessus, voici une fonction PHP personnalisée qui prend un seul caractère UTF-8 en entrée et renvoie son point de code UCS-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>
Exemple d'utilisation :
Pour utiliser la fonction, fournissez simplement un caractère UTF-8 comme entrée :
<code class="php">$char = "ñ"; $codePoint = get_ucs2_codepoint($char); echo "UCS-2 code point: $codePoint\n";</code>
Sortie :
UCS-2 code point: 241
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!