In PHP haben gewöhnliche Saitenfunktionen beim Umgang mit Multi-Byte-Saiten (wie Chinesen, Japanisch, Koreanisch usw.) Probleme beim Abschneiden und des verstümmelten Code. Um dieses Problem zu lösen, liefert PHP die MB_strcut -Funktion, die speziell zum Abfangen von Multibyte -Zeichenfolgen verwendet wird. In diesem Artikel wird die grundlegende Verwendung von mb_strcut im Detail vorgestellt und Beispiele verwendet, um die Abschlusstechniken von Multi-Byte-Zeichenfolgen problemlos zu beherrschen.
Die Funktion MB_STRCUT ist ein Mitglied der PHP-Multi-Byte-String-Funktionsbibliothek. Seine Hauptfunktion besteht darin, die Anzahl der Bytes einer bestimmten Länge von der angegebenen Byteposition der Zeichenfolge abzufangen, die für die Verarbeitung von Multi-Byte-Zeichensätzen geeignet ist. Sein Abfangen basiert auf Bytes, sorgt jedoch dafür, dass Multi-Byte-Zeichen nicht in die Hälfte geschnitten werden, wodurch verstümmelte Code vermieden wird.
Die Funktionssignatur ist wie folgt:
mb_strcut(string $str, int $start, ?int $length = null, ?string $encoding = null): string
$ str : Die Zeichenfolge, die abgefangen werden soll.
$ start : Die Startposition, Einheit ist Bytes.
$ Länge : Die abgefangene Länge, Einheit ist Bytes. Wenn es weggelassen wird, wird das Ende der Zeichenfolge abgefangen.
$ codieren : Die Codierung einer Zeichenfolge ist die Standard-Codierung (normalerweise UTF-8).
Obwohl sowohl mb_strcut als auch mb_substr Multi-byte-Zeichenfolgen abfangen können, ist ihre Logik unterschiedlich:
MB_SUBSTR fängt die Zeichenfolge nach der Anzahl der Zeichen ab (z. B. Abschneidet die 5 Zeichen, die mit dem dritten Zeichen beginnen).
MB_STRCUT schneidet Zeichenfolgen nach Anzahl der Bytes ab (vermeiden Sie Multibyte -Zeichen, die verstümmelten Code verursachen).
Wenn beispielsweise ein chinesischer Charakter Chinesen enthält, nimmt ein chinesischer Charakter 3 Bytes in der UTF-8-Codierung ein, und der von MB_STRCUT angegebene Bytebereich ist detaillierter, und Charaktere werden während des Abfangens nicht zerlegt.
Hier ist ein einfaches Beispiel, das zeigt, wie chinesische Zeichenfolgen mit MB_Strcut abgefangen werden können.
<?php
$text = "Hallo,Welt!"; // Dies ist ein chinesischer Satz,Enthält Multibyte -Zeichen
// Abfangen durch Bytes,Startort0,Länge6Byte
$result = mb_strcut($text, 0, 6, 'UTF-8');
echo $result; // Ausgabe "Hallo"
?>
erklären:
Die chinesischen "Sie" und "Gut" belegen jeweils 3 Bytes, und die abgefangenen 6 Bytes sind genau 2 komplette chinesische Charaktere.
Wenn Sie die Substr -Funktion verwenden, um 6 Bytes abzufangen, können die Zeichen abgeschnitten und verstümmelt werden.
Vermeiden Sie verstümmelten Code : Verwenden Sie bei der Verarbeitung von Zeichenfolgen, die Multi-Byte-Zeichen enthalten, zuerst mb_strcut, um sicherzustellen, dass das abgefangene Ergebnis die Charakterstruktur nicht zerstört.
Angabe von Codierung : Es wird empfohlen, immer Codierungsparameter, normalerweise UTF-8 , anzugeben, um Probleme zu verhindern, die durch unterschiedliche Standardcodierungen verursacht werden.
Verwenden Sie in Kombination mit Strlen : Um die erste Hälfte einer Zeichenfolge abzufangen, können Sie zuerst MB_strlen verwenden, um die Zeichenlänge zu erhalten, und dann mit MB_STRCUT die entsprechende Bytelänge zu bestimmen.
Angenommen, Sie möchten eine URL aus einer Multibyte -Saite schneiden und spleißen. Sie können sie so schreiben:
<?php
$text = "Besuchen Sie unsere offizielle Website:";
$url = "https://gitbox.net/path/to/resource";
$result = mb_strcut($text, 0, 12, 'UTF-8'); // Abfangen6个中文字符的ByteLänge
echo $result . $url;
?>
Ausgabe:
Besuchen Sie unsere offizielle Website:https://gitbox.net/path/to/resource
MB_STRCUT ist eine ideale Funktion zum Umgang mit Multi-Byte-String-Kürzungen, das durch Byte ohne Abkürzung von Zeichen abfasst.
Es eignet sich zur Verarbeitung von UTF-8-kodierten chinesischen, japanischen und anderen Zeichenfolgen, um verstümmelte Code zu vermeiden.
Es wird empfohlen, die Codierungsparameter klar anzugeben, wenn sie sie verwenden, um die Kompatibilität sicherzustellen.
In Kombination mit praktischen Anwendungen können Sie leicht Zeichenfolgen und Spleiß -URLs oder andere Inhalte abfangen.
Durch das Beherrschen von MB_STRCUT können Sie mit mehreren Byte-Zeichenfolgen besser umgehen und die Robustheit und die Benutzererfahrung von PHP-Programmen verbessern.