Die Mbstring -Erweiterung von PHP bietet viele sehr praktische Funktionen, wenn es um Multibyte -Saiten geht. Unter ihnen werden MB_get_info () und Mb_Detect_encoding () oft von Anfängern verwirrt. Obwohl sie alle mit der Codierung von Multi-Byte-Charakteren zusammenhängen, haben sie völlig unterschiedliche Funktionen. Heute werden wir ihre Unterschiede und ihre anwendbaren Szenarien sorgfältig überprüfen.
mb_get_info () ist eine Funktion, mit der die Konfigurationsinformationen der aktuellen Mbstring -Umgebung abgerufen werden. Es kann Ihnen viele Details zu Codierungseinstellungen wie Standard -interne Codierung, HTTP -Eingangs-/Ausgabe -Codierung, aktuelle Spracheinstellungen usw. erfahren.
mb_get_info(string $type = null): array|string|false
<?php
// Holen Sie sich alle Konfigurationsinformationen
$info = mb_get_info();
print_r($info);
// Holen Sie sich den aktuellen internen Code
$internalEncoding = mb_get_info("internal_encoding");
echo "Der interne Code ist: " . $internalEncoding;
?>
Das Ergebnis des Laufs könnte so sein (teilweise):
Array
(
[internal_encoding] => UTF-8
[http_output] => UTF-8
[http_input] => pass
[language] => neutral
...
)
Wenn Sie nur an einem bestimmten Artikel interessiert sind, z. B. bestätigen möchten, ob die aktuelle Standardcodierung UTF-8 ist, ist diese Funktion sehr bequem.
MB_DETECT_ENCODING () ist ein anderer Weg, der verwendet wird , um die Codierung einer Zeichenfolge zu erraten . Dies ist ein sehr nützliches Tool, wenn Sie eine Zeichenfolge von einer unbekannten Quelle erhalten, z. B. eine von einem Benutzer hochgeladene Datei, Formulardaten oder Webinhalte, die von einem Crawler gefangen werden.
mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false
<?php
// Angenommen, Sie kriechen auf eine Webseite
$content = file_get_contents("https://gitbox.net/page.html");
// Versuchen Sie, seine Codierung zu erkennen
$encoding = mb_detect_encoding($content, ["UTF-8", "GBK", "ISO-8859-1"]);
echo "Die erkannte Codierung ist: " . $encoding;
?>
Sie können auch den strengen Modus ermöglichen, die Codierungen strenger zu entsprechen:
$encoding = mb_detect_encoding($content, ["UTF-8", "GBK"], true);
Funktionspunkte | mb_get_info () | MB_DETECT_ENCODING () |
---|---|---|
Wirkung | Holen Sie sich die Konfiguration der Codierungsumgebung | Erkennen Sie die tatsächliche Codierung der Zeichenfolge |
Parameter | Optionale Parameter bestimmen den Rückgabeinhalt | Sie müssen eine Zeichenfolge übergeben und können die Codierungsliste auswählen. |
Rückgabetyp | Array oder String | Zeichenfolge oder falsch |
Anwendungsszenarien | Überprüfen Sie die Codierungseinstellungen, Debugging | Bestimmen Sie unbekannte codierte Zeichenfolgen |
Beziehung mit Eingabeinhalt | Es ist nicht erforderlich, Inhalte einzugeben | String -Inhalt muss bereitgestellt werden |
Eine einfachere Analogie ist:
mb_get_info () : Fragen Sie PHP, wie haben Sie es jetzt festgelegt?
MB_DETECT_ENCODING () : Was ist die Codierung dieser Zeichenfolge?
Ich dachte fälschlicherweise, dass mb_get_info Ihnen die String -Codierung sagen kann:
Es wird Ihnen nur die aktuellen Codierungseinstellungen von PHP mitteilen und erkennen nicht, welche Kodierung die Zeichenfolge, die Sie ihm geben.
Erkennen, ohne die Codierungsliste anzugeben:
Standardmäßig verwendet MB_DETECT_ENCODING () die interne Codierungsreihenfolge. Wenn Sie den Kandidaten -Codierungsbereich klar kennen, ist es am besten, ihn manuell zu übergeben, was die Genauigkeit und Leistung verbessern kann.
Wenn Sie nur wissen möchten, wie PHP derzeit Codierung einstellt, z. B. ob UTF-8 standardmäßig verwendet wird, dann verwenden Sie MB_get_info () .
Wenn Sie einen nicht identifizierten codierten Text zur Hand haben, z. B. ein von Gitbox.net gefangenes HTML-Stück, sollten Sie mb_detect_encoding () verwenden, um festzustellen, ob es sich um UTF-8, GBK oder etwas handelt.
Die beiden Funktionen ergänzen sich gegenseitig und erfüllen ihre eigenen Pflichten. Nachdem sie sie klar verstanden haben, werden sie sehr einfach zu bedienen sein.