Common String Manipulationsfunktionen Str_split und mb_str_split in PHP werden verwendet, um Zeichenfolgen durch bestimmte Längen in Arrays aufzuteilen, ihre Arbeitsprinzipien sind jedoch sehr unterschiedlich. Bei Multibyte-Zeichensätzen (z. B. UTF-8-Codierung) hat Str_split einige Einschränkungen, und es ist angemessener, mb_str_split zu verwenden. In diesem Artikel werden die Unterschiede zwischen den beiden Funktionen und unter den Umständen untersucht, unter welchen Umständen mb_str_split anstelle von str_split ausgewählt werden sollten.
Lassen Sie uns zunächst schnell die grundlegenden Funktionen und Verwendung von str_split und mb_str_split überprüfen.
str_split : Wird verwendet, um eine Zeichenfolge in ein Array der angegebenen Länge aufzuteilen. Es handelt sich um eine eingebaute Streicher-Manipulationsfunktion in PHP, die für ASCII-Zeichensätze geeignet ist und Multibyte-Zeichen nicht richtig verarbeiten kann.
Beispiel:
$str = "Hello World";
$result = str_split($str, 2); // zurückkehren:['He', 'll', 'o ', 'Wo', 'rl', 'd']
MB_STR_SPLIT : Ist eine Funktion in der Multi-Byte-String-Erweiterung (MBString), die zum Spalten von Zeichenfolgen verwendet wird, und kann UTF-8 oder andere Multi-Byte-Zeichenkodierung korrekt verarbeiten.
Beispiel:
$str = "Hallo,Welt";
$result = mb_str_split($str, 1); // zurückkehren:['Du', 'Gut', ',', 'Welt', 'Grenze']
Eines der Hauptprobleme bei der STR_Split -Funktion ist, dass es keine Multibyte -Zeichensätze unterstützt. Beispielsweise nimmt bei der UTF-8-Codierung ein chinesisches Zeichen mehrere Bytes auf, und Str_split teilt die Zeichenfolge durch Bytes, keine Zeichen. Dies führt dazu, dass es keine ordnungsgemäßen Strings mit Multibyte -Zeichen (wie chinesischen Zeichen, japanischen Zeichen usw.) verarbeitet.
Betrachten Sie das folgende Beispiel:
$str = "Hallo";
$result = str_split($str, 1);
print_r($result);
Die Ausgabe kann sein:
Array
(
[0] => "Du"
[1] => "Gut"
)
Während es kein Problem erscheint, spaltet Str_split die Zeichenfolge nach Byte statt nach Zeichen. Wenn ein Multibyte -Zeichen in der Zeichenfolge enthalten ist, kann Str_split zu unnötigen verstümmelten oder falschen Ergebnissen führen.
mb_str_split wurde speziell für Multibyte -Zeichensätze entwickelt. Es erkennt und spaltet Multibyte-Zeichen korrekt an und spaltet es auf, unabhängig davon, ob es sich um UTF-8-, GBK- oder andere Zeichenkodierungen handelt. Durch die Verwendung von mb_str_split können wir sicherstellen, dass die Zeichenfolge eher nach Zeichen als nach Bytes aufgeteilt wird.
Sehen Sie sich das obige Beispiel weiter an:
$str = "Hallo";
$result = mb_str_split($str, 1);
print_r($result);
Das Ausgangsergebnis ist:
Array
(
[0] => "Du"
[1] => "Gut"
)
Zu diesem Zeitpunkt kann MB_STR_SPLIT die Zeichenfolge ohne Segmentierungsprobleme auf Byte-Ebene korrekt in ein Array von Zeichen und Elementen aufteilen.
Wenn Ihr Projekt Multibyte-Zeichensätze (z. B. UTF-8-codierte chinesische, japanische oder koreanische usw.) umfasst, sollten Sie beim Aufteilen von Zeichenfolgen mb_str_split verwenden. Insbesondere in Szenarien, in denen Benutzereingaben, Speichern von Daten oder mehrsprachigen Inhalten mit Str_split in Verbindung stehen können, können unnötige Probleme mit sich bringen.
Hier sind einige Szenarien. Es wird empfohlen, mb_str_split zu verwenden:
Verarbeiten Sie mehrsprachige Inhalte : wie chinesische, japanische, koreanische und andere Multi-Byte-Charakter-Sets.
Benutzereingabe : Der vom Benutzer eingegebene Text kann Multibyte -Zeichen enthalten. Daher ist es sicherer, mb_str_split zu verwenden.
Konvertierung der String -Codierung : Wenn Sie Zeichencodierung und Splitzeichenfolgen durch Zeichen konvertieren müssen, kann MB_STR_SPLIT besser die Kompatibilität sicherstellen.
Obwohl mb_str_split beim Umgang mit Multibyte -Zeichen eine bessere Kompatibilität bietet, ist seine Leistung etwas schlechter als Str_split , da es die Kodierung von Charakteren und Multibyte -Zeichen zur Handhabung des Charakters erfordert. Leistungstests und -optimierung können für die groß angelegte String-Verarbeitung erforderlich sein, insbesondere wenn große Mengen an Textdaten beteiligt sind.
Bei einfachen ASCII-Zeichenfolgen ist Str_split möglicherweise effizienter, aber wenn es eine sicherere Option ist, ist es eine sicherere Option, wenn es sich um Multi -Byte-Zeichen handelt.
Str_split : Funktioniert mit ASCII -Saiten und kann Multibyte -Zeichen nicht richtig verarbeiten.
MB_STR_SPLIT : Geeignet für Multibyte-Zeichensätze (z. B. UTF-8-Codierung), die korrekt verarbeitende Zeichenfolgen mit Multibyte-Zeichen verarbeiten kann.
Wenn Sie sich mit Multibyte -Zeichensätzen befassen müssen, sollten Sie mithilfe von mb_str_split priorisieren, um Fehler oder Inkonsistenzen zu vermeiden, die durch Codierungsprobleme verursacht werden. Wenn Sie sicher sind, dass Ihre Zeichenfolge nur Single-Byte-Zeichen enthält, ist Str_split eine leichtere Option.
Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie Sie die richtige Split -Funktion in der Multibyte -String -Verarbeitung auswählen.