Heim > Artikel > Backend-Entwicklung > Wie extrahiere ich UCS-2-Codepunkte aus UTF-8-Zeichen in PHP?
Bestimmen von UCS-2-Codepunkten für UTF-8-Zeichen in PHP
Die vorliegende Aufgabe besteht darin, die UCS-2-Codepunkte zu extrahieren für Zeichen innerhalb einer bestimmten UTF-8-Zeichenfolge. Um dies zu erreichen, kann eine benutzerdefinierte PHP-Funktion definiert werden.
Zunächst ist es wichtig, das UTF-8-Codierungsschema zu verstehen. Jedes Zeichen wird abhängig von seinem Unicode-Codepunkt durch eine Folge von 1 bis 4 Bytes dargestellt. Die Bereiche für jede Bytegröße sind wie folgt:
Um die Anzahl der Bytes pro Zeichen zu bestimmen, untersuchen Sie das erste Byte:
Sobald die Anzahl der Bytes bestimmt ist, Bit Manipulation kann verwendet werden, um den Codepunkt zu extrahieren.
Benutzerdefiniertes PHP Funktion:
Basierend auf der obigen Analyse ist hier eine benutzerdefinierte PHP-Funktion, die ein einzelnes UTF-8-Zeichen als Eingabe verwendet und seinen UCS-2-Codepunkt zurückgibt:
<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>
Beispielverwendung:
Um die Funktion zu verwenden, geben Sie einfach ein UTF-8-Zeichen als ein Eingabe:
<code class="php">$char = "ñ"; $codePoint = get_ucs2_codepoint($char); echo "UCS-2 code point: $codePoint\n";</code>
Ausgabe:
UCS-2 code point: 241
Das obige ist der detaillierte Inhalt vonWie extrahiere ich UCS-2-Codepunkte aus UTF-8-Zeichen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!