Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Lernpfade
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 Unit Test Generator
 TLD Liste
 Webkatalog‑Verzeichnis

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP str_split(): Strings in Zeichen oder Blöcke zerlegen

Sie befinden sich: Home > Php Tutorial > PHP str_split(): Strings in...

PHP str_split(): Strings in Zeichen oder Blöcke zerlegen
Eintrag am:
27.07.2026
Hits / Besucher:
15
Sprache:
  Deutsch
Tutorial Art:
eigenes
Eingetragen von:
Merkliste:
 
Beschreibung

Strings zerlegen gehört zu den Aufgaben, die im PHP-Alltag ständig auftauchen: eine Kartennummer soll in Vierergruppen erscheinen, ein Hex-String in einzelne Bytes zerfallen oder ein Wort Buchstabe für Buchstabe geprüft werden. Genau dafür gibt es eine kurze und schnell erlernte Funktion, die in diesem Tutorial mit Syntax, Stolperfallen und Praxisbeispielen vorgestellt wird.

Was macht die Funktion PHP str_split()?

Wer in PHP einen String in einzelne Zeichen oder in gleich große Stücke zerlegen will, greift in der Regel zu PHP str_split. Die Funktion nimmt einen String entgegen und liefert ein Array zurück, das je nach Längen-Parameter einzelne Buchstaben oder ganze Blöcke enthält. Sie ist damit der Standard-Helfer für Formatierungs- und Analyse-Aufgaben rund um Zeichenketten.

Illustration zum Tutorial: PHP str_split(): Strings in Zeichen oder Blöcke zerlegen

Bevor Syntax und Multibyte-Verhalten im Detail folgen, lohnt sich der Vergleich mit explode(), weil beide Funktionen oft verwechselt werden.

Im Gegensatz zu explode(), das an einem Trennzeichen schneidet, arbeitet PHP str_split rein nach Länge. Aus 'PHP' wird ['P', 'H', 'P'], aus '1234567890' mit Länge 4 wird ['1234', '5678', '90']. Diese Mechanik ist ideal für Aufgaben wie das Formatieren von Kreditkartennummern oder das byteweise Lesen eines Hex-Strings.

Syntax und der zweite Parameter

Die Signatur ist kurz und gut zu merken. PHP str_split erwartet zwei Argumente: den zu zerlegenden String und die Länge der einzelnen Blöcke. Wird der zweite Parameter weggelassen, gilt der Standardwert 1.

<?php

str_split(string $string, int $length = 1): array

Der Rückgabewert ist immer ein Array. Liegt der String als leerer String vor, liefert PHP str_split seit PHP 8.2 ein leeres Array, vorher gab es ein einelementiges Array mit dem leeren String darin. Eine negative oder die Null als Länge führt seit PHP 8 zu einem ValueError, davor gab es eine Warnung und ein false als Rückgabewert. Wer also Code aus alten Projekten migriert, sollte die Aufrufe einmal prüfen.

Default-Aufruf: jeder String wird zum Zeichen-Array

Im Standardaufruf wird jeder Buchstabe zu einem eigenen Array-Element. Diese Form eignet sich, wenn man pro Zeichen iterieren oder Filter anwenden will, etwa für eine eigene Validierung oder ein einfaches Codierschema.

<?php

$buchstaben = str_split('PHP');
print_r($buchstaben);
/* Array(
[0] => P
[1] => H
[2] => P
) */

Wer das Array später wieder zusammenfügen möchte, nutzt implode(), oft mit einem Trennzeichen wie Bindestrich oder Leerzeichen. Diese Kombination ist die Grundlage für fast alle Formatier-Tricks rund um Strings.

Strings in Blöcke fester Länge zerlegen

Mit dem zweiten Parameter wird PHP str_split richtig praktisch. Eine Kreditkartennummer in vier Blöcke zu vier Ziffern, ein Hex-String in zweistellige Bytes, ein Telefonnummern-Block in drei Ziffern: all das ist eine einzige Zeile.

<?php

$kartennummer = '4321987612345678';
$bloecke = str_split($kartennummer, 4);
echo implode(' ', $bloecke);
/* 4321 9876 1234 5678 */

Wenn die Länge des Eingabestrings nicht durch den Block-Wert teilbar ist, wird der letzte Block einfach kürzer. Aus '1234567' mit Länge 3 wird ['123', '456', '7']. Das ist im Alltag praktisch, in einer Prüfung sollte man aber wissen, dass die Anzahl der Elemente schwanken kann.

Multibyte-Stolperfalle und mb_str_split

PHP str_split arbeitet byte-basiert. Solange der String nur aus ASCII besteht, entspricht ein Byte einem Zeichen, doch sobald Umlaute oder Emoji ins Spiel kommen, wird die Sache verzwickt. UTF-8-kodierte Umlaute wie ä, ö, ü belegen je 2 Bytes, ein Emoji oft 4 Bytes. Wer mit str_split('Müller') in Einzelzeichen zerlegt, bekommt für das ü zwei kaputte Byte-Fragmente.

<?php

$text = 'Müller';
$bytes = str_split($text);
echo count($bytes) . ' Byte-Fragmente' . "\n";
/* 7 Fragmente, das ue zerfaellt in zwei kaputte Bytes */

$zeichen = mb_str_split($text);
echo count($zeichen) . ' echte Zeichen' . "\n";
/* 6 Zeichen, ue bleibt als ein Element */
print_r($zeichen);
/* Array(
[0] => M
[1] => ü
[2] => l
[3] => l
[4] => e
[5] => r
) */

Die Funktion mb_str_split() ist seit PHP 7.4 die UTF-8-sichere Alternative. Sie versteht Multibyte-Strings korrekt und liefert ein Array von Zeichen statt von Bytes. Wer Texte mit Umlauten oder Emoji verarbeitet, sollte dauerhaft auf mb_str_split umsteigen oder zumindest dokumentieren, warum die byte-Variante absichtlich genutzt wird, etwa beim Lesen von Hex-Strings, wo ein Byte gemeint ist.

str_split vs. explode und chunk_split

Im Code-Review tauchen oft drei Funktionen mit ähnlichem Klang auf. PHP str_split zerlegt nach Länge, explode() zerlegt an einem Trennzeichen, chunk_split() fügt einen Trenner ein, liefert aber einen String statt eines Arrays. Wer das verwechselt, baut sich schnell Bugs ein.

<?php

$csv = 'apfel,banane,kirsche';

/* explode trennt am Komma */
print_r(explode(',', $csv));
/* ['apfel', 'banane', 'kirsche'] */

/* str_split trennt nach Laenge 5 */
print_r(str_split($csv, 5));
/* ['apfel', ',bana', 'ne,ki', 'rsche'] */

/* chunk_split fuegt nach 5 Zeichen einen Schluessel ein */
echo chunk_split($csv, 5, '|');
/* apfel|,bana|ne,ki|rsche| */

Faustregel: explode für Trennzeichen-basierte Eingaben (CSV, Pfade), PHP str_split für feste Blöcke (Kartennummern, Hex), chunk_split für Stringausgabe mit Trennzeichen (Base64-Zeilen-Umbruch). Mit dieser Trennung im Kopf ist die Wahl meistens schnell getroffen.

Praxisbeispiel Kreditkartennummer

Das wohl häufigste Anwendungsbeispiel für PHP str_split ist die Anzeige von Kreditkartennummern in 4er-Blöcken. Sicherheitsrelevant ist dabei das Maskieren der mittleren Blöcke, sodass nur die ersten und letzten vier Ziffern lesbar sind.

<?php

$nummer = '4321987612345678';
$bloecke = str_split($nummer, 4);

/* mittlere Bloecke maskieren */
for ($i = 1; $i < count($bloecke) - 1; $i++) {
$bloecke[$i] = str_repeat('*', strlen($bloecke[$i]));
}

echo implode(' ', $bloecke);
/* 4321 **** **** 5678 */

Solche Maskierungen sind nicht nur kosmetisch, sondern entsprechen auch PCI-DSS-Vorgaben für die Anzeige von Kartennummern in Belegen oder Logs. Mit PHP str_split und ein paar Zeilen Schleife lässt sich das ohne externe Bibliothek umsetzen.

Praxisbeispiel Hex-Bytes parsen

Ein zweiter klassischer Anwendungsfall ist das Parsen eines Hex-Strings in einzelne Bytes. Dabei ist das byte-basierte Verhalten von PHP str_split sogar erwünscht, weil ein Byte hier wirklich zwei Hex-Ziffern entspricht.

<?php

$hex = 'ff80c3a4';
$bytes = str_split($hex, 2);

foreach ($bytes as $byte) {
echo "0x$byte = " . hexdec($byte) . "\n";
}
/* 0xff = 255
0x80 = 128
0xc3 = 195
0xa4 = 164
*/

Diese Variante ist die Grundlage für Farbcodes (RGB-Hex), MD5- oder SHA-Auswertungen, MAC-Adressen und viele weitere Aufgaben in der Datenverarbeitung. Wer das Ergebnis weiterverarbeiten will, kombiniert mit array_map(fn($h) => hexdec($h), $bytes) und erhält ein Integer-Array.

Welcher Weg im konkreten Fall der richtige ist, hängt vor allem an der Kodierung des Eingabe-Strings. Das folgende Diagramm fasst die Entscheidung zusammen.


flowchart TD
    A[String als Eingabe] --> B{ASCII oder UTF-8?}
    B -->|ASCII oder Hex| C[str_split mit Laenge n]
    B -->|UTF-8 mit Umlauten| D[mb_str_split nutzen]
    C --> E[Array von Bloecken]
    D --> E

Fazit

Mit PHP str_split steht ein einfaches und vielseitiges Werkzeug zur Verfügung, das Strings in handliche Teile zerlegt. Wer die Default-Variante für Zeichen-Arrays und den Längen-Parameter für Blöcke kennt, hat 90 Prozent der Anwendungsfälle abgedeckt. Bei Texten mit Umlauten oder Emoji führt der Weg über mb_str_split(), weil PHP str_split byte-basiert arbeitet und dort schnell falsche Ergebnisse liefert. Im Vergleich zu explode() und chunk_split() bleibt die Funktion das richtige Mittel für alle Fälle, in denen ein String nach fester Länge geschnitten werden soll. So wird PHP str_split vom kleinen Helfer zum verlässlichen Standard-Tool für Kreditkartenformat, Hex-Bytes und schnelle Zeichen-Iterationen.

 

Tags:

 

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.