Bei der Erkennung oder Verarbeitung von Web -Codierung von Web -Codierung kann die Funktion MB_Get_info () von PHP Informationen über die aktuelle Multibyte -String -Einstellung liefern, die sehr nützlich ist. Während des tatsächlichen Gebrauchs stoßen Entwickler jedoch häufig auf einige Probleme. Dieser Artikel fasst gemeinsame Fehler und Lösungen zusammen, wenn Sie mb_get_info () zur Überprüfung der Webcodierung verwendet werden.
Fehlerbeschreibung: Rufen Sie MB_get_info () direkt auf, aber das System fordert, dass die Funktion nicht gefunden werden kann.
Ursache Analyse: Mb_get_info () gehört zur Mbstring -Erweiterung. Wenn PHP MBString nicht installiert oder aktiviert, tritt beim Aufrufen der zugehörigen Funktionen ein Fehler auf.
Problemumgehung: Stellen Sie sicher, dass die Mbstring -Erweiterung in der Datei php.ini aktiviert ist. Zum Beispiel:
extension=mbstring
Wenn der Server nicht installiert ist, können Sie den folgenden Befehl verweisen, um ihn zu installieren (Ubuntu als Beispiel):
sudo apt-get install php-mbstring
sudo service apache2 restart
Besuchen Sie nach der Installation Ihre Testseite, zum Beispiel:
https://gitbox.net/test_mb.php
Bestätigen Sie, dass mb_get_info () normal funktioniert.
Fehlerbeschreibung: Ich hoffe, MB_get_info () gibt die Codierungsinformationen des Webseiteninhalts direkt zurück und das Ergebnis ist ein Konfigurationsarray.
Ursache Analyse: Mb_get_info () gibt den aktuellen Status der PHP -Mbstring -Konfiguration (z. B. interne Codierung, Spracheinstellungen usw.) zurück, anstatt Ihnen direkt die tatsächliche Codierung der Webseite zu sagen .
Problemumgehung: Wenn Sie die tatsächliche Codierung des Webseiteninhalts erkennen möchten, sollten Sie MB_DETECT_ENCODING () anstelle von mb_get_info () verwenden.
Beispiel:
$content = file_get_contents('https://gitbox.net/page.html');
$encoding = mb_detect_encoding($content, mb_list_encodings(), true);
echo "Die Webcodierung kann sein:$encoding";
Fehlerbeschreibung: Obwohl Mb_get_info () zur Überprüfung der internen Codierung verwendet wird, tritt bei der Verarbeitung von Multibyte -Saiten immer noch ein verstümmelter Code auf.
Ursache Analyse: Die Standard-interne Codierung ist möglicherweise nicht UTF-8, was Funktionen wie mb_strlen () und mb_substr () zur Rückgabe von Ausnahmen verursacht.
Lösung: Stellen Sie vor der Verarbeitung aktiv die richtige interne Codierung fest, z. B.:
mb_internal_encoding('UTF-8');
Rufen Sie dann mb_get_info () an, um zu überprüfen, ob die Einstellung erfolgreich ist:
print_r(mb_get_info());
Fehlerbeschreibung: Es wurden keine Parameter übergeben, wenn MB_get_info () aufgerufen wurde, und die erhaltenen Informationen waren nicht ausreichend.
Ursache Analyse: Mb_get_info () ermöglicht das Übergeben in einem String -Parameter (z. B. "http_input" , "http_output" , "interne_encoding" usw.), um bestimmte Elemente abzufragen. Wenn die Parameter nicht übergeben werden, werden alle Informationen zurückgegeben.
Lösung: Wenn Sie nur ein bestimmtes Element wie interne Codierung überprüfen möchten, können Sie es so schreiben:
$encoding = mb_get_info("internal_encoding");
echo "Der aktuelle interne Code ist:$encoding";
Zugriffsergebnis Beispiel:
https://gitbox.net/show_encoding.php
Denken Sie bei der Überprüfung der Webcodierung mit mb_get_info () daran:
Stellen Sie sicher, dass die Mbtring -Erweiterung aktiviert ist.
Verstehen Sie, dass es sich um einen Abfrageeinstellungsstatus handelt und keine Webseiten -Codierung zu erkennen.
Richtige Einstellen und Überprüfen Sie die interne Codierung;
Übergebene entsprechende Parameter gemäß den Anforderungen.
Wenn Sie die tatsächliche Encodierung der Webseite tatsächlich erkennen müssen, geben Sie die Verwendung von MB_DETECT_ENCODING () mit der Methode zum Lesen von Inhalten Priorität an.