W3docs

substr()

Die Funktion substr() in PHP extrahiert einen Teil eines Strings. Sie ist eines der meistgenutzten String-Werkzeuge in PHP.

Die Funktion substr() gibt einen Ausschnitt eines Strings zurück – die Zeichen zwischen einer Startposition und einer optionalen Länge. Sie gehört zu den am häufigsten verwendeten String-Werkzeugen in PHP: Präfixe abschneiden, die ersten N Zeichen eines Labels nehmen, ein Feld mit fester Breite auslesen oder eine Dateiendung ermitteln – all das läuft auf einen substr()-Aufruf hinaus. Diese Seite behandelt die Syntax, das Verhalten der Argumente $start und $length (einschließlich negativer Werte), häufige Fallstricke sowie den Fall, wann stattdessen mb_substr() verwendet werden sollte.

Syntax

substr(string $string, int $offset, ?int $length = null): string
ParameterBeschreibung
$stringDer Eingabe-String, aus dem extrahiert wird.
$offsetNullbasierte Startposition. Negative Werte zählen vom Ende des Strings.
$lengthOptional. Wie viele Zeichen zurückgegeben werden sollen. Weglassen (oder null übergeben) liest bis zum Ende des Strings. Ein negativer Wert bedeutet „halte so viele Zeichen vor dem Ende an."

substr() gibt den extrahierten Teilstring zurück. Ab PHP 8.0 gibt sie immer einen String zurück (einen leeren String, wenn nichts übereinstimmt); vor PHP 8.0 gab sie bei einem Fehler false zurück, sodass dies in älterem Code noch vorkommen kann.

Ein einfaches Beispiel

php— editable, runs on the server

$offset ist 0, die Extraktion beginnt also beim ersten Zeichen, und $length ist 5, sodass fünf Zeichen (Hello) zurückgegeben werden. Denke daran, dass der Offset nullbasiert ist: Position 0 ist H, Position 1 ist e usw.

Wie der Offset funktioniert

Ein positiver Offset zählt vom Anfang; ein negativer Offset zählt vom Ende (wobei -1 das letzte Zeichen ist):

<?php
$string = "Hello World!";

echo substr($string, 6);   // World!  — from offset 6 to the end
echo "\n";
echo substr($string, -6);  // World!  — last 6 characters
echo "\n";
echo substr($string, -1);  // !       — just the last character

Wenn $length weggelassen wird, wird alles ab dem Offset zurückgegeben – praktisch, um ein bekanntes Präfix zu entfernen.

Wie die Länge funktioniert

Ein positiver $length-Wert begrenzt die Anzahl der zurückgegebenen Zeichen. Ein negativer $length-Wert hält so viele Zeichen vor dem Ende des Strings an – ideal, um ein bekanntes Suffix abzuschneiden:

<?php
$string = "Hello World!";

echo substr($string, 0, -1);   // Hello World  — drop the trailing "!"
echo "\n";
echo substr($string, -6, 5);   // World        — start 6 from the end, take 5
echo "\n";
echo substr($string, 4, 0);    // (empty)      — length 0 returns ""

Wenn die angeforderte Länge über das Ende des Strings hinausgeht, gibt substr() einfach zurück, was vorhanden ist – es wird kein Fehler für „zu lang" ausgegeben.

Praktisches Beispiel: eine Dateiendung

Die Kombination von substr() mit strrpos() (das die letzte Position eines Zeichens findet) ist der klassische Weg, eine Dateiendung auszulesen:

<?php
$filename = "report.final.pdf";
$ext = substr($filename, strrpos($filename, ".") + 1);

echo $ext; // pdf

Häufige Fallstricke

  • Offset außerhalb des Bereichs. Wenn $offset größer als die Stringlänge ist, erhält man einen leeren String (in PHP 8+). Es findet kein Wrap-around statt.
  • Zählt Bytes, nicht Zeichen. substr() arbeitet auf Bytes. Bei UTF-8-Text mit Akzentzeichen oder Emojis kann das Aufteilen mitten in einem Zeichen unleserliche Ausgaben erzeugen. Verwende mb_substr() für multibyte-sichere Extraktion.
  • Off-by-one bei der Länge. $length ist eine Anzahl, kein Endindex. substr($s, 2, 3) gibt 3 Zeichen ab Index 2 zurück – nicht die Zeichen zwischen Index 2 und Index 3.

Verwandte Funktionen

  • strlen() — Länge eines Strings ermitteln, häufig zur Berechnung einer $length verwendet.
  • strpos() — Startposition eines Teilstrings finden, um sie an substr() zu übergeben.
  • explode() — String anhand eines Trennzeichens in ein array aufteilen.
  • trim() — Leerzeichen (oder andere Zeichen) von beiden Enden entfernen.

Übung

Übung
Wozu dient die Funktion substr() in PHP?
Wozu dient die Funktion substr() in PHP?
Was this page helpful?