In der PHP-Entwicklung stoßen wir häufig auf Probleme, die sich mit Multi-Byte-Charakter-Sätzen (wie Chinesen, Japanisch, Koreanisch usw.) befassen müssen. Zu diesem Zeitpunkt sind MB_CONVERT_ECODING und HTML_ENTITY_DECODE zwei sehr nützliche Funktionen, die uns helfen können, Zeichencodierung und HTML -Entitäten korrekt zu verarbeiten. In diesem Artikel wird detailliert erläutert, wie mit diesen beiden Funktionen mit Multibyte -Zeichen ordnungsgemäß umgehen kann.
mb_convert_encoding :
Diese Funktion ist eine Multibyte -String -Verarbeitungsfunktion in PHP, die hauptsächlich zum Konvertieren von Codierungen zwischen verschiedenen Zeichensätzen verwendet wird. Für Multibyte-Zeichensätze (wie UTF-8, GBK usw.) kann MB_CONVERT_ENCODING effektiv konvertieren.
Beispiel Verwendung:
$str = mb_convert_encoding($str, 'UTF-8', 'GBK');
Der obige Code wandelt $ str von der GBK-Codierung in die UTF-8-Codierung um.
html_entity_decode :
Diese Funktion wird verwendet, um HTML -Entitäten (z. B. < , > , & ) auf ihre entsprechenden Zeichen zu übertragen. Diese Funktion ist sehr nützlich, wenn Sie mit HTML -Inhalten arbeiten, insbesondere wenn der HTML -Inhalt von Entity codiert wird und die ursprünglichen Zeichen wiederherstellen möchte.
Beispiel Verwendung:
$str = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
Wenn wir HTML -Inhalte verarbeiten, die Multibyte -Zeichen enthalten, können wir auf zwei Situationen stoßen:
Der Inhalt wird durch HTML -Entität codiert : Zeichen im HTML -Inhalt können in Entitätsformular konvertiert werden (z. B. < Override < ). In diesem Fall müssen wir html_entity_decode verwenden, um die Entität zuerst in normale Zeichen zu dekodieren.
Charaktercodierung inkonsistent : In einigen Anwendungsszenarien kann die Charaktercodierung von HTML-Inhalten mit der Standardcodierung von PHP übereinstimmen (z. B. HTML-Inhalt ist die UTF-8-Codierung, während PHP-Programme GBK-Codierung verwenden). Um verstümmelte Codeprobleme zu vermeiden, können wir mit mb_convert_encoding den Inhalt in eine geeignete Codierung umwandeln.
Angenommen, wir erhalten ein Stück HTML -Inhalt aus der Datenbank, die chinesische Zeichen enthält, und diese chinesischen Zeichen wurden von HTML -Entitäten codiert. Um diese Zeichen korrekt anzuzeigen, können wir die folgenden Schritte ausführen:
Verwenden Sie mb_convert_encoding , um sicherzustellen, dass die Zeichencodierung von HTML -Inhalten mit dem aktuellen PHP -Programm übereinstimmt.
Verwenden Sie HTML_ENTITY_DECODE , um HTML -Entitäten wieder in normale Zeichen zu konvertieren.
Hier ist ein vollständiges Code -Beispiel:
<?php
// Angenommen, es wird aus der Datenbank abgerufen HTML Inhalt
$html_content = "<div>Hallo,Welt!</div>";
// Schritt1:Code konvertieren von GBK Konvertieren zu UTF-8
$html_content = mb_convert_encoding($html_content, 'UTF-8', 'GBK');
// Schritt2:Wille HTML Entität in normale Zeichen dekodiert
$html_content = html_entity_decode($html_content, ENT_QUOTES, 'UTF-8');
echo $html_content; // Ausgabe:<div>Hallo,Welt!</div>
?>
Im obigen Code konvertiert mb_convert_encoding zunächst den HTML-Inhalt von der GBK-Codierung in UTF-8-Codierung, und dann decodiert HTML_ENTITY_DECODE die HTML-Entität. Der endgültige Ausgangsinhalt ist das richtige HTML -Format, und die darin enthaltenen chinesischen Zeichen können ebenfalls korrekt angezeigt werden.
Problem mit verstümmeltem Code : Wenn der Ausgabeinhalt weiterhin verstümmelt ist, kann dies auf inkonsistente Codierungseinstellungen in PHP zurückzuführen sein. Die Standardcodierung kann über die Funktionen mb_internal_encoding und mb_http_output eingestellt werden:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
Die HTML -Entität ist nicht korrekt dekodiert : Wenn HTML_ENTITY_DECODE einige Sonderzeichen nicht dekodieren kann, kann dies daran liegen, dass der Parameter ent_quotes nicht korrekt angegeben ist. Sie können versuchen, den Parameter an ent_NOOCKOTES oder andere geeignete Optionen zu ändern.
Codierungsprobleme sind an der URL beteiligt : Wenn der HTML -Inhalt eine URL enthält und die Zeichencodierung in der URL sich von der Seitencodierung unterscheidet, kann ein URL -Fehler auftreten. Zu diesem Zeitpunkt können Sie Urlencode und Urldecode verwenden, um URL -Codierung zu verarbeiten:
$url = "http://gitbox.net/somepage?param=" . urlencode("Hallo,Welt!");
Mit mb_convert_encoding und html_entity_decode kann die Probleme der Multi-Byte-Zeichencodierung und der HTML-Entitätskodierung effektiv lösen. In der tatsächlichen Entwicklung begegnen wir häufig inkonsistente Codierung oder HTML -Entitätskodierung, und diese beiden Funktionen können uns helfen, diese Probleme leicht zu behandeln. Durch die Beherrschung der Verwendung dieser beiden Funktionen kann die Stabilität und Zuverlässigkeit der Verarbeitung von Multibyte -Zeichen verbessert werden.