Aktueller Standort: Startseite> Neueste Artikel> Warum erscheint Str_split bei der Verarbeitung chinesischer Zeichen verstümmelt?

Warum erscheint Str_split bei der Verarbeitung chinesischer Zeichen verstümmelt?

M66 2025-05-18

Bei Verwendung von PHP zur Verarbeitung von Zeichenfolgen ist Str_split eine häufig verwendete Funktion, um eine Zeichenfolge in eine Substring einer bestimmten Länge aufzuteilen. Seine häufige Verwendung besteht darin, eine Zeichenfolge in Zeichen oder Unterstrings der festen Länge zu teilen. Wenn wir jedoch mit chinesischen Charakteren zu tun haben, können wir auf verstümmelte Probleme stoßen, da Str_split Strings eher nach Bytes als nach Zeichen aufteilt. Chinesische Zeichen belegen normalerweise mehrere Bytes, was dazu führt, dass Str_split chinesische Zeichen nicht richtig verarbeitet, was zu verstümmelten Code führt.

Wie die Funktion str_split funktioniert

Die Str_split -Funktion spaltet die Zeichenfolge durch Bytelänge und standardmäßig beträgt die Länge jedes Substring 1. Wenn die eingehende Zeichenfolge Multibyte -Zeichen (z. B. chinesische Zeichen) enthält, behandelt Str_split jedes Byte als ein Zeichen. Auf diese Weise werden chinesische Zeichen in mehrere einzelne Zeichen unterteilt, was zu verstümmelten Code führt.

Beispiel für Müllcode

Angenommen, wir haben eine chinesische Saite "Hallo, Php!" und teilen Sie es mit str_split -Funktion auf:

 <?php
$str = "Hallo,PHP!";
$result = str_split($str);
print_r($result);
?>

Die Ausgabe kann sein:

 Array
(
    [0] => Du
    [1] => Gut
    [2] => ,
    [3] => P
    [4] => H
    [5] => P
    [6] => !
)

Aus den Ausgabergebnissen können wir sehen, dass die chinesischen Zeichen "Sie" und "Gut" jeweils in separate Zeichen und nicht in ein Ganzes aufgeteilt sind. Dies wird zu verstümmelten Code führen.

Wie vermeiden Sie Probleme mit verstümmelten Code?

Um dies zu vermeiden, können wir die Funktion mb_str_split verwenden. mb_str_split ist eine Multibyt-Safe-String-Split-Funktion, die chinesische Zeichen korrekt behandelt und als Ganzes teilt.

Verwenden Sie die Funktion mb_str_split

mb_str_split ist eine Multibyte -String -Funktion für PHP (Teil der Mbstring -Erweiterung). Es spaltet die Zeichenfolge durch Zeichen anstelle von Bytes. Bei Verwendung der Funktion MB_STR_SPLIT gibt es keine verstümmelten Probleme.

 <?php
$str = "Hallo,PHP!";
$result = mb_str_split($str);
print_r($result);
?>

Das Ausgangsergebnis ist:

 Array
(
    [0] => Du
    [1] => Gut
    [2] => ,
    [3] => P
    [4] => H
    [5] => P
    [6] => !
)

Wie Sie sehen können, sind die chinesischen Charaktere "Sie" und "gut" als Ganzes richtig aufgeteilt, anstatt sich in mehrere Bytes aufzuteilen.

Wie man chinesische Charaktere in URLs umgeht

Wenn Sie eine URL in Ihrem Code (z. B. API -Anfragen usw.) verwenden und die URL chinesische Zeichen enthält, müssen Sie auch vorsichtig sein, wenn Sie die chinesischen Zeichen in der URL an Str_split übergeben. Die URL kann mit Urlencode- oder Rawurlencode -Funktionen codiert werden, um verstümmelte Codeprobleme zu vermeiden.

Zum Beispiel:

 <?php
$url = "https://m66.net/search?query=Chinesische Charaktere";
$encoded_url = urlencode($url);
echo $encoded_url;
?>

Das Ausgangsergebnis ist:

 https%3A%2F%2Fm66.net%2Fsearch%3Fquery%3D%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6

Auf diese Weise werden chinesische Zeichen korrekt in ein URL-Anerkennungsformat codiert.

Zusammenfassen

  • Die Str_split -Funktion hat ein verstümmeltes Problem beim Umgang mit chinesischen Zeichen, da sie Strings durch Bytes aufteilt und chinesische Zeichen normalerweise mehrere Bytes aufnehmen.

  • Um verstümmelten Code zu vermeiden, können Sie die Funktion MB_STR_SPLIT verwenden, um Multibyte -Zeichen zu verarbeiten, um sicherzustellen, dass die chinesischen Zeichen als Ganzes aufgeteilt werden.

  • Wenn Sie sich mit URLs mit Chinesen befassen müssen, sollten Sie Urlencode- oder Rawurlencode -Funktionen verwenden, um die URL zu codieren, um verstümmelte Codeprobleme zu verhindern.

Hoffentlich können diese Methoden Ihnen helfen, das verstümmelte Problem von Str_split beim Umgang mit chinesischen Zeichen zu vermeiden und die korrekte Verarbeitung von Zeichenfolgen sicherzustellen.