Aktueller Standort: Startseite> Neueste Artikel> Der Unterschied zwischen MB_Get_Info -Funktion und Funktion MB_DETECT_ENCODING

Der Unterschied zwischen MB_Get_Info -Funktion und Funktion MB_DETECT_ENCODING

gitbox 2025-05-11

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.

1. Was macht mb_get_info ()?

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.

Grammatik:

 mb_get_info(string $type = null): array|string|false

Beispiel der Nutzung:

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

2. Was macht MB_DETECT_ENCODING ()?

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.

Grammatik:

 mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false

Beispiel der Nutzung:

 <?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);

3. Zusammenfassung des Unterschieds zwischen ihnen

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?

4. Häufige Missverständnisse

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

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

5. Zusammenfassung

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.