Die grundlegende Syntax der Funktion MB_Encode_NumericalEntity lautet wie folgt:
<span><span><span class="hljs-title function_ invoke__">mb_encode_numericentity</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$convmap</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$from_encoding</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$to_encoding</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ str : Die zu konvertierte Zeichenfolge.
$ concmap : Character Conversion Mapping -Regel ist ein Array, das angibt, welche Zeichen in numerische Entitäten konvertiert werden sollten.
$ from_encoding : Originalzeichen (wie UTF-8, ISO-8859-1 usw.).
$ to_encoding : Zielzeichensatz (wie UTF-8, ISO-8859-1 usw.).
Diese Funktion konvertiert Zeichen in der Zeichenfolge in HTML- oder XML -Format -Entitäten gemäß den vom Parameter $ CURPMAP angegebenen Regeln. Die Konfiguration des $ convmap -Arrays ist für den Konvertierungseffekt von entscheidender Bedeutung.
Der Parameter $ convmap ist ein Array, das aus einer Reihe von Subtarrays von 4 Elementen besteht, von denen jeder einen Bereich oder eine Regel für die Charakterumwandlung definiert. Seine Struktur ist wie folgt:
<span><span><span class="hljs-variable">$convmap</span></span><span> = [
[Aus Zeichencode, zum Zeichencode, Aus dem Zeichensatz, Zum Charakter gesetzt],
</span><span><span class="hljs-comment">// Weitere Regeln</span></span><span>
];
</span></span>
Aus Zeichencode : Dies ist der Startcharaktercode für die Umwandlung einer numerischen Entität, normalerweise eine Ganzzahl, die die Position des Zeichens im ursprünglichen Zeichensatz darstellt.
Zum Zeichencode : Dies ist der Endcharaktercode für die Konvertierung der digitalen Entität, die den Bereich der Konvertierung angibt.
Aus Zeichensatz : Gibt die Codierungsart von Zeichen in der Eingabezeichenfolge an.
Zum Zeichensatz : Gibt den Codierungstyp des konvertierten Zeichens, normalerweise UTF-8, an.
Zum Beispiel können Sie bei der Konfiguration von $ concmap die Zeichenbereiche definieren, um zu steuern, welche Zeichen in digitale Entitäten konvertiert werden.
Durch die korrekte Konfiguration des Parameters $ concmap können Sie die Conversion -Regeln genau steuern. Hier sind einige Konfigurations -Tipps:
Wenn Sie nur bestimmte Zeichen in digitale Entitäten umwandeln möchten, können Sie dies tun, indem Sie den Zeichencodebereich festlegen. Angenommen, Sie möchten nur alle Zeichen als ASCII -Zeichen in numerische Entitäten umwandeln, können Sie eine $ concmap konfigurieren, die Zeichencodes außerhalb des ASCII -Bereichs enthält.
<span><span><span class="hljs-variable">$convmap</span></span><span> = [
[</span><span><span class="hljs-number">0x80</span></span><span>, </span><span><span class="hljs-number">0x10FFFF</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>]
];
</span></span>
Diese Konfiguration bedeutet, dass alle Zeichen größer oder gleich 0x80 (d. H. Nicht-ASCII-Zeichen) im UTF-8-Codierungsbereich in digitale Entitäten umgewandelt werden.
Wenn Sie sich auf HTML -Inhalte spezialisiert haben und bestimmte spezielle Symbole (wie < , > , & usw.) in HTML -Digitalentitäten umwandeln möchten, können Sie dies tun, indem Sie den entsprechenden Zeichenbereich festlegen.
<span><span><span class="hljs-variable">$convmap</span></span><span> = [
[</span><span><span class="hljs-number">0x20</span></span><span>, </span><span><span class="hljs-number">0x2F</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>], </span><span><span class="hljs-comment">// KonvertierenASCIIInterpunktionsmarken</span></span><span>
[</span><span><span class="hljs-number">0x3A</span></span><span>, </span><span><span class="hljs-number">0x40</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>], </span><span><span class="hljs-comment">// Konvertieren冒号到@Charakter</span></span><span>
];
</span></span>
Nach dieser Konfiguration werden alle Zeichen, die den Bedingungen erfüllen, in entsprechende Digitalentitäten umgewandelt.
Bei Unicode -Zeichen kann ein breiterer Bereich definiert werden, um sicherzustellen, dass alle Sprachen und speziellen Symbole ordnungsgemäß konvertiert werden. Diese Methode ist besonders nützlich für Szenarien, die mehrsprachige Zeichen enthalten.
<span><span><span class="hljs-variable">$convmap</span></span><span> = [
[</span><span><span class="hljs-number">0x3000</span></span><span>, </span><span><span class="hljs-number">0x303F</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>], </span><span><span class="hljs-comment">// KonvertierenCJKSymbolUndInterpunktionsmarken</span></span><span>
];
</span></span>
Diese Konfiguration wandelt alle Unicode -Zeichen zwischen 0x3000 und 0x303f in digitale Entitäten um, die für spezielle Symbole in chinesischen, japanischen, koreanischen und anderen Sprachen geeignet sind.
Obwohl mb_encode_numericalEntity leistungsstark ist, sollten die folgenden Punkte bei der Verwendung immer noch beachtet werden:
Stellen Sie sicher, dass die eingehende Zeichenkodierung ( $ von_encoding und $ to_encoding ) korrekt ist. Wenn die Quellzeichenfolge beispielsweise UTF-8-Codierung ist und die Zielcodierung ISO-8859-1 ist, müssen Sie die entsprechende Codierung ausdrücklich angeben, um verstümmelte Code oder Konvertierungsfehler zu vermeiden.
Stellen Sie bei der Definition von $ concmap sicher, dass die Ausschreibungen der Zeichenbereiche. Wenn der Bereich zu eng eingestellt ist, werden einige Zeichen möglicherweise nicht konvertiert. Wenn der Bereich zu groß eingestellt ist, kann er die Umwandlung anderer Zeichen unnötig beeinflussen. Daher ist es am besten, den Charakterbereich entsprechend den tatsächlichen Bedürfnissen zu verfeinern.
Bei sehr großen Zeichenfolgen oder Umbauten mehrerer Zeichensätze kann MB_Encode_NumericalEntity die Leistung beeinflussen. Erwägen Sie, den Konvertierungsprozess in kleinere Einheiten aufzuteilen oder nur einen bestimmten Zeichen zu konvertieren, um eine unnötige Verarbeitung zu vermeiden.
Unterschiedliche PHP -Versionen oder Umgebungen können MB_Encode_NumericalEntity unterschiedlich unterstützen. Stellen Sie bei der Verwendung sicher, dass die Mbtring -Erweiterung in der PHP -Umgebung korrekt installiert ist und dass die Version der Erweiterung die benötigten Funktionen unterstützt.
Hier ist ein praktischer Anwendungsfall, der zeigt, wie man mb_encode_numericalEntity verwendet, um Text mit Sonderzeichen zu verarbeiten:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"这是一个测试Charakter串,Enthalten <、> Und & Symbol。"</span></span><span>;
</span><span><span class="hljs-variable">$convmap</span></span><span> = [
[</span><span><span class="hljs-number">0x80</span></span><span>, </span><span><span class="hljs-number">0x10FFFF</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>] </span><span><span class="hljs-comment">// Alle nichtASCIICharakterKonvertieren为数字实体</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_encode_numericentity</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$convmap</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;
</span></span>
Die Ausgabe wird sein, dass alle Nicht-ASCII-Zeichen in digitale Wesenheiten umgewandelt werden, wie z. B.:
<span><span>这是一个测试Charakter串,Enthalten </span><span><span class="hljs-selector-tag">&</span></span><span><span class="hljs-selector-id">#60</span></span><span>;、</span><span><span class="hljs-selector-tag">&</span></span><span><span class="hljs-selector-id">#62</span></span><span>; Und </span><span><span class="hljs-selector-tag">&</span></span><span><span class="hljs-selector-id">#38</span></span><span>; Symbol。
</span></span>
Diese Art des Umgangs ist sehr hilfreich, um XSS -Angriffe, HTML -Fehler und andere Probleme zu vermeiden.