W3docs

chunk_split()

Die PHP-Funktion chunk_split() teilt einen string in gleich lange Abschnitte und fügt nach jedem einen Trenner ein.

Die PHP-Funktion chunk_split() zerlegt einen string in eine Folge gleich langer Teile und fügt nach jedem Teil einen Trenner ein. Sie erzeugt kein array – sie gibt einen einzigen neuen string zurück, in den die Trenner bereits eingebettet sind. Der klassische Anwendungsfall ist das Umbrechen langer, ununterbrochener Daten (z. B. Base64-kodierter Inhalte) in Zeilen fester Breite für die E-Mail- bzw. MIME-Übertragung.

Dieses Kapitel behandelt die Syntax, alle Parameter, ausführbare Beispiele und häufige Fallstricke.

Syntax

chunk_split(string $string, int $length = 76, string $separator = "\r\n"): string
ParameterErforderlichStandardwertBeschreibung
$stringJaDer zu teilende string.
$lengthNein76Die Länge jedes Abschnitts in Bytes. Muss 1 oder größer sein.
$separatorNein"\r\n"Der string, der nach jedem Abschnitt eingefügt wird.

Die Funktion gibt den neuen string zurück. Der Trenner wird nach jedem Abschnitt angehängt – einschließlich des letzten –, sodass das Ergebnis immer mit einem abschließenden Trenner endet.

Die Standardwerte sind bewusst gewählt: 76 Zeichen mit einem \r\n (CRLF) als Zeilenende entspricht genau der Empfehlung von RFC 2045 für MIME-kodierte Nachrichtenkörper.

Einfaches Beispiel

Einen string in Abschnitte von 20 Zeichen mit dem Standard-Trenner \r\n aufteilen:

php— editable, runs on the server

Alle 20 Zeichen fügt chunk_split() einen Wagenrücklauf + Zeilenvorschub (\r\n) ein. Im Terminal erscheint \r\n als Zeilenumbruch, sodass die Ausgabe folgendermaßen aussieht:

Lorem ipsum dolor si
t amet, consectetur 
adipiscing elit. Nul
la at nulla justo, e
get luctus tortor. M
aecenas vel est at m
assa aliquam semper.

Jede sichtbare Zeile enthält genau 20 Zeichen des ursprünglichen Strings – die Funktion zählt Zeichen, keine Wörter, und trennt Wörter daher mitten durch. Wenn Sie stattdessen wortgenaues Umbrechen benötigen, verwenden Sie wordwrap().

Eigenen Trenner verwenden

Der dritte Parameter legt fest, was nach jedem Abschnitt eingefügt wird. Hier verwenden wir einen einfachen Zeilenumbruch ("\n") statt des Standard-\r\n:

php— editable, runs on the server

Die Ausgabe:

Lorem ipsum dolor si
t amet, consectetur 
adipiscing elit. Nul
la at nulla justo, e
get luctus tortor. M
aecenas vel est at m
assa aliquam semper.

Der Trenner kann ein beliebiger string sein, nicht nur ein Zeilenumbruch. Mit chunk_split("abcdefghij", 4, "-") erhält man abcd-efgh-ij- – beachten Sie das abschließende - nach dem letzten, kürzeren Abschnitt.

Praxisbeispiel: Base64-Daten umbrechen

chunk_split() wurde für E-Mails entwickelt. Base64-Ausgaben bilden eine einzige, ununterbrochene Zeile, aber MIME-Körper müssen bei 76 Zeichen umgebrochen werden. Die Kombination von base64_encode() und chunk_split() erzeugt übertragungsbereiten Text:

<?php
$data = "Hello World, this is a longer string to demonstrate chunk_split for MIME like wrapping of base64 data.";
$encoded = base64_encode($data);
echo chunk_split($encoded, 76, "\n");
?>

Damit wird der Base64-string in Zeilen von 76 Zeichen unterteilt:

SGVsbG8gV29ybGQsIHRoaXMgaXMgYSBsb25nZXIgc3RyaW5nIHRvIGRlbW9uc3RyYXRlIGNodW5r
X3NwbGl0IGZvciBNSU1FIGxpa2Ugd3JhcHBpbmcgb2YgYmFzZTY0IGRhdGEu

Worauf Sie achten sollten

  • Abschließender Trenner. chunk_split() hängt den Trenner immer auch nach dem letzten Abschnitt an. Falls das unerwünscht ist, kürzen Sie ihn ab: rtrim(chunk_split($s, 20), "\r\n").
  • Rückgabe ist ein string, kein array. Um einen string in ein array aus gleich langen Teilen zu zerlegen, verwenden Sie str_split(). Um bei einem Trennzeichen aufzuteilen, nutzen Sie explode().
  • Länge wird in Bytes gemessen. Bei Multibyte-Text (UTF-8) kann ein Abschnitt mitten in einem Multibyte-Zeichen enden und dieses beschädigen. chunk_split() ist nur für Single-Byte-Daten wie ASCII oder Base64 byte-sicher.
  • $length muss positiv sein. Der Wert 0 löst in PHP 8+ einen ValueError aus; in älteren Versionen eine Warnung und false.

Verwandte Funktionen

  • wordwrap() — einen string an Wortgrenzen auf eine bestimmte Breite umbrechen.
  • str_split() — einen string in ein array gleich langer Teile aufteilen.
  • explode() — einen string anhand eines Trennzeichens in ein array aufteilen.
  • nl2br() — HTML-Zeilenumbrüche vor Zeilenvorschüben einfügen.

Übungsaufgaben

Übung
Welche der folgenden Aussagen zur Funktion chunk_split() in PHP ist korrekt?
Welche der folgenden Aussagen zur Funktion chunk_split() in PHP ist korrekt?
Was this page helpful?