MB_Encode_NumericalEntity wird verwendet, um Zeichen in einer Zeichenfolge zu codieren, die den angegebenen Bereich in das numerische Entitätsformat erfüllen. Das numerische Entitätsformat ähnelt dem &#xxxx; In HTML, wobei xxxx der Unicode -Codepunkt ist, der dem Zeichen entspricht.
Funktionsprototyp:
string mb_encode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding(), bool $is_hex = false)
$ str : Die Zeichenfolge, die codiert werden soll.
$ concmap : Konvertiert ein Kartenarray, um anzugeben, welche Zeichenbereiche codiert werden müssen. Das Format ist eine Gruppe von vier Ganzzahlen, die den Startcodepunkt, den Endcodepunkt, den Offset -Wert bzw. den Codewert darstellt.
$ codierung : String -Codierung, Standard für interne Codierung.
$ is_hex : Wenn auf True gesetzt, wird die numerische Entität in Hexadezimal dargestellt.
MB_Decode_NumericalEntity wird verwendet, um Zeichenfolgen im numerischen Entitätsformat in Original -Multibyte -Zeichenfolgen zu konvertieren.
Funktionsprototyp:
string mb_decode_numericentity(string $str, array $convmap, string $encoding = mb_internal_encoding())
$ str : Die String, die dekodiert werden soll.
$ concmap : Konvertiert das Kartenarray mit der gleichen Funktion wie MB_Encode_NumericalEntity .
$ codierung : String -Codierung.
Angenommen, wir müssen eine Zeichenfolge, die Chinese enthält, codieren, alle chinesischen Zeichen in numerische Entitäten umwandeln und dann entschlüsseln und in die ursprüngliche Zeichenfolge wiederherstellen.
<?php
// Definieren Sie die Transformationskarte,Berichterstattung der häufig verwendete chinesische Charakter -Codierungsbereich
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];
// Zeichenfolge, die codiert werden soll
$str = "Hallo,Welt!Hello World!";
// Codierung,Umwandeln Sie chinesische Charaktere in numerische Wesenheiten
$encoded = mb_encode_numericentity($str, $convmap, "UTF-8");
echo "Codierung后:\n" . $encoded . "\n";
// Dekodierung,Stellen Sie numerische Entitäten wieder auf chinesische Charaktere zurück
$decoded = mb_decode_numericentity($encoded, $convmap, "UTF-8");
echo "Dekodierung后:\n" . $decoded . "\n";
?>
Auslaufergebnisse:
Codierung后:
你好,世界!Hello World!
Dekodierung后:
Hallo,Welt!Hello World!
Manchmal müssen wir die Teile der URL mit Multibyte -Zeichen codieren, um sicherzustellen, dass der Übertragungsprozess sicher und mit der Spezifikation konform ist. Hier finden Sie ein einfaches Beispiel: Verwenden der numerischen Entitätscodierung für den Pfadteil in der URL und dann zurück.
<?php
$convmap = [0x4E00, 0x9FFF, 0, 0xFFFF];
$url = "https://gitbox.net/Weg/prüfen";
// 只对Weg部分Codierung
$parsed = parse_url($url);
$encoded_path = mb_encode_numericentity(urldecode($parsed['path']), $convmap, "UTF-8");
// 拼接Codierung后的 URL
$encoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $encoded_path;
echo "Codierung后的 URL:\n" . $encoded_url . "\n";
// DekodierungWeg
$decoded_path = mb_decode_numericentity($encoded_path, $convmap, "UTF-8");
// Vollständig wiederherstellen URL
$decoded_url = $parsed['scheme'] . "://" . $parsed['host'] . $decoded_path;
echo "Dekodierung后的 URL:\n" . $decoded_url . "\n";
?>
Ausgabe:
Codierung后的 URL:
https://gitbox.net/车路/测试
Dekodierung后的 URL:
https://gitbox.net/Weg/prüfen
mb_encode_numericalEntity kann Zeichen innerhalb eines angegebenen Bereichs in einer Zeichenfolge in eine numerische Entitätskodierung umwandeln, wodurch Multi-Byte-Zeichen effektiv vor Übertragung oder Speicher vor Verfälschung geschützt werden.
mb_decode_numericalEntity ist für die Wiederherstellung der codierten numerischen Entität zu den entsprechenden Multibyte -Zeichen verantwortlich.
Diese beiden Funktionen werden in Verbindung miteinander verwendet und sind sehr bequem, wenn Sie Probleme mit String-Codierung in mehrsprachigen Umgebungen zu tun haben, und eignen sich besonders für die Behandlung von URLs mit Sonderzeichen oder Textdaten, die ein sicheres Übertragung erfordern.
Das Mastering dieser beiden Funktionen kann die Flexibilität und Sicherheit der Multi-Byte-String-Verarbeitung erheblich verbessern.