In PHP wird die Funktion mb_decode_numericalEntity verwendet, um numerische Entitäten in eine Zeichenfolge in entsprechende Zeichen umzuwandeln. Dies ist sehr nützlich, wenn es um Multibyte -Charakter -Codierung geht, z. B. das Konvertieren von Text mit HTML -Entitäten. Das korrekte Einstellen des Bereichs Array ist der Schlüssel, um sicherzustellen, dass die Funktion ordnungsgemäß funktioniert.
string mb_decode_numericentity ( string $string , array $map , string $encoding = mb_internal_encoding() )
$ String : Die zu konvertierte Zeichenfolge.
$ MAP : Range -Array, Definieren des Konversionsbereichs und des Versatzes numerischer Entitäten.
$ codierung : Zeichencodierung, Standard für interne Codierung.
Ein Range-Array ist ein eindimensionales Array, und seine Länge muss ein Vielfaches von 4 sein. Jede 4 Elemente repräsentieren einen Umrechnungsbereich:
[
start_codepoint, end_codepoint, offset, mask,
start_codepoint, end_codepoint, offset, mask,
...
]
START_CODEPOINT : Start Unicode Code Point (dezimal).
End_CodePoint : End Unicode Code Point (dezimal).
Offset : Der Offset (normalerweise 0) wird auf den Wert der numerischen Entität angewendet.
Maske : Maske, verwendet für Bitoperationen, normalerweise 0xffff oder 0xfffffff.
HINWEIS: MB_DECODE_NUMERICALITY konvertieren nur Zeichen, deren numerische Entitätscodepunkte in den Bereich start_codepoint in End_CodePoint fallen.
Angenommen, der von der numerische Entität, den wir konvertierte Unicode -Bereich, der von der numerischen Entität abgedeckt werden, ist die grundlegende Multitxt -Ebene (BMP), d. H. Von 0x0 bis 0xffff:
$map = [
0x0, 0xFFFF, 0, 0xFFFF
];
Hier ist die Erklärung:
Konvertiert numerische Entitäten von 0 bis 65535 für alle Unicode -Codepunkte.
Offset 0 bedeutet, dass der ursprüngliche numerische Entitätscodepunkt nicht angepasst wird.
Die Maske 0xFFFF wird verwendet, um sicherzustellen, dass das Konvertierungsergebnis auf den 16-Bit-Bereich begrenzt ist.
<?php
// Die zu konvertierte Zeichenfolge,Enthält numerische Einheiten
$input = "Hello 你好!"; // “Hello Hallo!”
// Stellen Sie das Konvertierungsbereich -Array ein,KonvertierenBMPDie Entität des Umfangs
$map = [0x0, 0xFFFF, 0, 0xFFFF];
// verwendenmb_decode_numericentityKonvertieren
$output = mb_decode_numericentity($input, $map, 'UTF-8');
echo $output; // Ausgabe:Hello Hallo!
?>
Das Bereich Array muss ein Vielfaches von 4 sein , andernfalls ist die Funktion ungültig.
Der Offset wird im Allgemeinen auf 0 eingestellt, sofern nicht anders erforderlich.
Die Maske ist normalerweise 0xffff (16 Bit) oder 0xfffffff (32 Bit), abhängig vom Unicode -Bereich.
Wenn die numerische Entität außerhalb des Bereichs ist, wandelt die Funktion sie nicht um.
Das Bereich von mb_decode_numericalEntity bestimmt, welche numerischen Entitäten konvertiert werden.
Stellen Sie angemessene Start- und Endcodepunkte und -masken fest, um sicherzustellen, dass die Zielzeichen korrekt analysiert werden können.
Setzen Sie für die meisten gewöhnlichen Szenen [0x0, 0xffff, 0, 0xfff] , um die Konvertierung des BMP -Bereichs zu erfüllen.
Durch das Beherrschen der Einstellungen für den Bereich Array können Sie verschiedene multi-byte-codierte Charakterentitäten flexibel behandeln, um verstümmelte Code und Parsenfehler zu vermeiden.