In PHP müssen wir bei der Verarbeitung von Zeichenfolgen die Zeichenfolge häufig in Arrays aufteilen. PHP bietet zwei häufig verwendete Funktionen, um diese Aufgabe zu erfüllen: str_split () und mb_str_split () . Obwohl sie etwas Ähnliches zu tun scheinen, sind sie sehr unterschiedlich. Als nächstes werden wir die Unterschiede zwischen diesen beiden Funktionen analysieren und die in verschiedenen Szenarien verwendet werden.
Die Funktion str_split () teilt eine Zeichenfolge in ein Substring -Array der angegebenen Länge. Die grundlegende Nutzung ist wie folgt:
$string = "HelloWorld";
$result = str_split($string, 2);
print_r($result);
Ausgabe:
Array
(
[0] => He
[1] => ll
[2] => oW
[3] => or
[4] => ld
)
Wie oben gezeigt, teilt die Funktion str_split () die Zeichenfolge in mehrere Teile, indem die Länge jedes Substring angegeben wird. Standardmäßig wird Str_split () durch ein Zeichen geteilt.
Str_split () basiert jedoch auf Bytes, was bedeutet, dass es nicht freundlich zu Multibyte-Zeichen wie UTF-8-codierten Zeichen ist. Wenn Ihre Zeichenfolge Multibyte-Zeichen wie chinesische oder andere Nicht-ASCII-Zeichen enthält, kann das Verhalten von Str_split () unerwartete Ergebnisse erzielen.
Im Vergleich zu str_split () eignet sich mb_str_split () besser für die Verarbeitung von Multibyte -Zeichen. Diese Funktion gehört zur Multi-Byte-String-Erweiterung von PHP (Mbstring) und kann UTF-8-kodierte Zeichenfolgen korrekt verarbeiten.
$string = "Hallo,Welt";
$result = mb_str_split($string, 2, "UTF-8");
print_r($result);
Ausgabe:
Array
(
[0] => Du
[1] => Gut
[2] => ,
[3] => Welt
[4] => Grenze
)
In diesem Beispiel unterteilt die Funktion mb_str_split () Strings nach Zeichen und nicht durch Bytes, was sicherstellt, dass Multi-Byte-Zeichen (z. B. chinesische Zeichen) korrekt geteilt werden können.
Merkmal | str_split () | mb_str_split () |
---|---|---|
Charaktertypen verarbeitet | Aufgeteilt von Bytes (geeignet für ASCII -Zeichen) | Aufgeteilt nach Charakter (für Multi-Byte-Zeichen geeignet, unterstützt UTF-8 und andere Codierung) |
Szenarien verwenden | Geeignet für Zeichenfolgen, die nur ASCII -Zeichen enthalten | Geeignet für Saiten mit Multibyte -Zeichen (wie Chinesen, Japanisch usw.) |
Die Funktion befindet sich in der Erweiterung | PHP-integrierte Funktionen | Müssen die Mbstring -Erweiterung installieren und aktivieren |
Wenn Sie sich nur mit ASCII -Zeichenfolgen befassen , ist es angemessen, Str_split () zu verwenden, da es nicht von zusätzlichen Erweiterungen abhängt und die Ausführung effizienter ist.
Wenn Ihre Zeichenfolge Multibyte-Zeichen (z. B. UTF-8-kodierter Chinesisch, Japanisch usw.) enthält , sollten Sie mb_str_split () verwenden. Es wird korrekt durch Zeichen geteilt, ohne die Multibyte -Zeichen in einzelnen Bytes falsch aufzuteilen.
Installieren und Aktivieren von Mbstring -Erweiterungen
mb_str_split () ist eine Funktion in der Mbtring -Erweiterung. Bevor Sie sie verwenden, müssen Sie sicherstellen, dass PHP die Mbstring -Erweiterung installiert und aktiviert hat. Sie können überprüfen, ob es installiert ist von:
php -m | grep mbstring
Wenn nicht installiert, können Sie es über den folgenden Befehl installieren:
sudo apt-get install php-mbstring
Leistungsunterschiede <br> Während mb_str_split () Multibyte -Zeichen korrekt verarbeiten kann, kann es Str_split () in der Leistung geringfügig minderwertig sein, da es die Codierung von Charakteren und Multibyte -Zeichen erfordert.
Angenommen, wir haben eine Zeichenfolge, die die URL enthält, die wir teilen und den Domänenteil ändern möchten. In diesem Beispiel verwenden wir mb_str_split () , um sicherzustellen, dass die Zeichenfolge ordnungsgemäß durch Zeichen geteilt wird:
// Originalzeichenfolge
$url = "https://www.example.com/path/to/resource";
// Ersetzen Sie den Domain -Namen
$parsed_url = parse_url($url);
$domain = "m66.net"; // Neuer Domain -Name
$new_url = str_replace($parsed_url['host'], $domain, $url);
// Neue Zeichen durch Charakter teilen URL
$result = mb_str_split($new_url, 3, "UTF-8");
print_r($result);
Ausgabe: