Aktueller Standort: Startseite> Neueste Artikel> So kombinieren Sie MB_Get_Info mit MB_strlen zur Erkennung von Stringlängen

So kombinieren Sie MB_Get_Info mit MB_strlen zur Erkennung von Stringlängen

gitbox 2025-05-11

Bei der Verarbeitung von Multibyte -Saiten (wie Chinesen, Japanisch, Koreanisch usw.) in PHP führt die Verwendung von Standard -String -Funktionen (wie Strlen ) häufig zu unerwarteten Ergebnissen. Weil diese Funktionen in Bytes berechnet werden, nicht in Zeichen. Zu diesem Zeitpunkt müssen wir Funktionen in der Multibyte -String -Erweiterung von PHP (MBString) wie MB_strlen und mb_get_info verwenden, um genauere String -Operationen zu erzielen.

Dieser Artikel führt Sie durch die grundlegende Verwendung von mb_strlen und mb_get_info und verwendet Beispiele, um zu veranschaulichen, wie sie Ihnen helfen, die Länge der Multibyte -Saiten genau zu erkennen.

1. Warum kann Strlen nicht direkt verwendet werden?

Schauen wir uns ein einfaches Beispiel an:

 $str = "Hallo,Welt";
echo strlen($str);  // Ausgabe:15

Diese Zeichenfolge hat nur 5 chinesische Zeichen (einschließlich Kommas), kehrt jedoch 15 zurück. Dies liegt daran, dass unter UTF-8-Codierung ein chinesischer Charakter normalerweise 3 Bytes aufnimmt. Strlen zählt "Byte -Nummer", nicht "Charakternummer".

Wenn wir die wahre Anzahl von Zeichen erhalten möchten, sollten wir MB_strlen verwenden:

 echo mb_strlen($str);  // Ausgabe:5

Auf diese Weise erhalten wir die richtige Anzahl von Zeichen.

2. Berechnen Sie MB_strlen , um die Zeichenlänge genau zu berechnen

MB_strlen ist eine Funktion, die speziell für Multibyte -Zeichen entwickelt wurde, mit der Syntax wie folgt:

 int mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
  • $ str : Die Zeichenfolge, um die Länge zu messen

  • $ codierung : Optional geben Sie den Codierungstyp an und verwenden Sie die von MB_Internal_encoding zurückgegebene Codierung ().

Beispiel:

 $str = "Willkommen zu Besuch https://gitbox.net";
$length = mb_strlen($str, 'UTF-8');
echo "Die Charakterlänge ist:$length";

Ausgabe:

 Die Charakterlänge ist:18

Dies zählt die "Anzahl der Zeichen" in einer gemischten chinesischen und englischen Zeichenfolge korrekt, nicht in der Anzahl der Bytes.

3. Wie kann man MB_Get_Info verwenden, um Codierungsinformationen zu erhalten?

MB_Get_Info kann Ihnen helfen, die aktuelle Mbstring -Konfiguration, insbesondere die interne Codierungsmethode, zu verstehen:

 $info = mb_get_info();
print_r($info);

Ausgangsbeispiel:

 Array
(
    [internal_encoding] => UTF-8
    [http_input] => pass
    [http_output] => pass
    [language] => neutral
    [encoding_translation] => 0
    ...
)

Dies zeigt uns, dass die UTF-8-Kodierung derzeit verwendet wird. Wenn Sie feststellen, dass die Ergebnisse der MB_strlen -Berechnung ungenau sind, ist es hilfreich zu prüfen, ob die interne Codierung korrekt eingestellt ist.

Sie können auch angeben, spezifische Informationen zurückzugeben:

 echo mb_get_info("internal_encoding");  // Ausgabe:UTF-8

4. Vorschläge: Setzen Sie die Standardcodierung

Um Probleme zu vermeiden, wird empfohlen, die Standard -Multibyte -Codierung am Anfang des Skripts festzulegen:

 mb_internal_encoding("UTF-8");

Dies stellt sicher, dass Funktionen wie Mb_strlen , MB_SUBSTR und andere Funktionen in UTF-8 codiert werden, um Zeichenfolgen zu verarbeiten.