Aktueller Standort: Startseite> Neueste Artikel> So stellen Sie das Bereich der Funktion mb_decode_numericalentity korrekt ein

So stellen Sie das Bereich der Funktion mb_decode_numericalentity korrekt ein

gitbox 2025-05-29

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.


1. Einführung in die Funktion MB_DECODE_NUMERICERICALITY

 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.


2. Format und Regeln von Range Array $ MAP

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.


3. Beispiel: Stellen Sie das Bereichsarray korrekt ein

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.


4. CODE CODE -Beispiel

 <?php
// Die zu konvertierte Zeichenfolge,Enthält numerische Einheiten
$input = "Hello &#20320;&#22909;!"; // “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!
?>

5. Dinge zu beachten

  1. Das Bereich Array muss ein Vielfaches von 4 sein , andernfalls ist die Funktion ungültig.

  2. Der Offset wird im Allgemeinen auf 0 eingestellt, sofern nicht anders erforderlich.

  3. Die Maske ist normalerweise 0xffff (16 Bit) oder 0xfffffff (32 Bit), abhängig vom Unicode -Bereich.

  4. Wenn die numerische Entität außerhalb des Bereichs ist, wandelt die Funktion sie nicht um.


6. Zusammenfassung

  • 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.