W3docs

strpbrk()

Die PHP-Funktion strpbrk() durchsucht einen String nach einem aus einer Zeichenmenge und gibt den Rest des Strings ab dem ersten Treffer zurück.

Einführung

Die Funktion strpbrk() in PHP durchsucht einen String nach einem der Zeichen aus einer angegebenen Menge und gibt den Rest des Strings ab dem ersten Treffer zurück. Der Name steht für „string pointer break" – die Funktion durchsucht den Heuhaufen von links nach rechts und bricht ab (engl. breaks), sobald sie auf ein Zeichen aus der Suchmenge trifft.

Das macht sie praktisch für Aufgaben wie „Gib mir alles ab dem ersten @, = oder ?", ohne einen regulären Ausdruck schreiben zu müssen. Dieser Artikel behandelt die Syntax, Rückgabewerte, einen häufigen Stolperstein bei der Trefferauswahl und praktische Anwendungsfälle.

Syntax

strpbrk(string $haystack, string $char_list): string|false
ParameterBeschreibung
$haystackDer zu durchsuchende String.
$char_listEin String mit den zu suchenden Zeichen. Jedes Zeichen wird einzeln betrachtet – "abc" bedeutet „eines der Zeichen a, b oder c", nicht den Teilstring "abc".

Rückgabewert: der Teil von $haystack ab dem ersten gefundenen Zeichen bis zum Ende des Strings. Wenn keines der Zeichen aus $char_list vorhanden ist, wird false zurückgegeben.

strpbrk() ist Groß-/Kleinschreibung-sensitiv: Die Suche nach "A" findet kein kleingeschriebenes a.

Einfaches Beispiel

php— editable, runs on the server

Ausgabe:

Found 'llo World' in 'Hello World'

Hier gibt es eine häufige Überraschung: Das Ergebnis ist llo World, nicht World. Die Funktion gibt ab dem ersten Zeichen zurück, das sie beim Durchsuchen von links nach rechts findet. Obwohl W in der Suchliste steht, kommt das Kleinbuchstabe l in „Hello" früher im String vor, daher beginnt der zurückgegebene Teilstring dort. Die Reihenfolge in $char_list spielt keine Rolle – nur die Position im Heuhaufen zählt.

Der Treffer ist positionsbasiert, nicht listenreihenfolgebasiert

Es liegt nahe anzunehmen, dass strpbrk() die Reihenfolge der übergebenen Zeichen berücksichtigt. Das ist nicht der Fall – die Funktion gibt ab dem Zeichen zurück, das am frühesten im Heuhaufen vorkommt:

<?php

// 'o' and 'q' are both in the list; 'q' appears first in the haystack.
echo strpbrk("The quick brown fox", "oq"); // quick brown fox

Ausgabe:

quick brown fox

Praktischer Einsatz: Aufteilen an einem Trennzeichen

Da strpbrk() „alles ab dem Trennzeichen" zurückgibt, kann man die Funktion mit substr() kombinieren, um den Wert nach einem Separator zu extrahieren:

<?php

$pair = "name=John";

$fromEquals = strpbrk($pair, "=");   // "=John"
$value      = substr($fromEquals, 1); // drop the leading "=" -> "John"

echo $value;

Ausgabe:

John

Die Funktion eignet sich auch gut, wenn mehrere mögliche Trennzeichen gleichzeitig akzeptiert werden sollen:

<?php

$line = "[email protected]";

echo strpbrk($line, "@?#"); // @example.com

Ausgabe:

@example.com

Umgang mit „nicht gefunden"

Wenn keines der angegebenen Zeichen im Heuhaufen vorhanden ist, gibt strpbrk() false zurück. Vergleiche immer mit dem strikten Operator !==, damit ein leeres, aber gültiges Ergebnis nicht fälschlicherweise als Fehler interpretiert wird:

<?php

$result = strpbrk("PHP 8.4", "AEIOU"); // uppercase vowels — none present (case-sensitive)

if ($result === false) {
  echo "No matching character found.";
} else {
  echo $result;
}

Ausgabe:

No matching character found.

strpbrk() im Vergleich zu verwandten Funktionen

FunktionSucht nachGibt zurück
strpbrk()einem aus mehreren Zeichenden Rest des Strings ab dem ersten Treffer oder false
strpos()einem einzelnen Teilstringdie numerische Position des Treffers oder false
strstr()einem einzelnen Teilstringden Rest des Strings ab diesem Teilstring oder false
strrchr()dem letzten Vorkommen eines Zeichensden Rest des Strings ab dieser Stelle oder false

Verwende strpbrk(), wenn du eine kleine Menge von Zeichen prüfen möchtest und das Ende des Strings benötigst. Wenn du immer nur nach einem festen Teilstring suchst, ist strstr() oder strpos() klarer. Für musterbasierte Suchen verwende preg_match().

Fazit

strpbrk() gibt den Rest eines Strings zurück, beginnend beim ersten Zeichen, das mit einem der Zeichen aus der Suchmenge übereinstimmt, oder false, wenn kein Treffer gefunden wird. Beachte, dass der Treffer durch die Position im Heuhaufen bestimmt wird, nicht durch die Reihenfolge in der Suchliste, und dass die Funktion Groß-/Kleinschreibung-sensitiv ist. Sie ist eine kompakte Alternative zu einem regulären Ausdruck, wenn man „alles ab dem ersten Trennzeichen" benötigt.

Übungen

Übung
Was macht die Funktion strpbrk() in PHP?
Was macht die Funktion strpbrk() in PHP?
Was this page helpful?