Signatur
Beschreibung
strpbrk() durchsucht den String $string nach dem ersten Auftreten eines beliebigen Zeichens aus $characters. Wird eines der gesuchten Zeichen gefunden, gibt die Funktion den Teilstring zurück, der an dieser Position beginnt und bis zum Ende des Ausgangsstrings reicht. Wird kein Zeichen gefunden, wird false zurückgegeben.
Im Gegensatz zu strstr() oder strpos(), die nach einer festen Zeichenkette suchen, akzeptiert strpbrk() eine Menge einzelner Zeichen und findet das erste Vorkommen eines beliebigen davon. Das macht die Funktion besonders nützlich, wenn man nach mehreren möglichen Trennzeichen oder Sonderzeichen sucht, ohne diese einzeln prüfen zu müssen.
Die Suche ist case-sensitiv, Groß- und Kleinschreibung werden also unterschieden. Die Reihenfolge der Zeichen in $characters spielt keine Rolle – es wird immer das erste Vorkommen eines der angegebenen Zeichen im Suchstring gefunden.
Typische Einsatzgebiete sind das Erkennen von Sonderzeichen in Benutzereingaben, das Auffinden von Trennzeichen in strukturierten Strings oder die schnelle Prüfung, ob ein String eines aus einer Menge unerwünschter Zeichen enthält.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu durchsuchende Ausgangsstring. | |
| $characters Pflicht | string | Eine Zeichenkette, deren einzelne Zeichen als Suchmenge dienen. Das erste Zeichen aus dieser Menge, das im $string vorkommt, bestimmt die Rückgabe. |
Rückgabewert
$characters beginnt und bis zum Ende des Ausgangsstrings reicht. Wird keines der Zeichen gefunden, gibt die Funktion false zurück.Beispiele
Erstes Sonderzeichen in einer E-Mail-Adresse finden
<?php
$email = 'benutzer@example.com';
$result = strpbrk($email, '@.');
if ($result !== false) {
echo 'Gefunden ab Position: ' . $result . PHP_EOL;
} else {
echo 'Kein Sonderzeichen gefunden.' . PHP_EOL;
}
Prüfen, ob ein String unerwünschte Zeichen enthält
<?php
$eingaben = [
'NormalerText',
'Text<mit>HTML',
'Kein Problem hier',
'Semikolon;drin',
];
$verboten = '<>;&"\'';
foreach ($eingaben as $eingabe) {
if (strpbrk($eingabe, $verboten) !== false) {
echo "Ungültige Eingabe: $eingabe" . PHP_EOL;
} else {
echo "OK: $eingabe" . PHP_EOL;
}
}
Position des ersten Treffers ermitteln
<?php
$string = 'Hello, World!';
$treffer = strpbrk($string, 'aeiouAEIOU');
if ($treffer !== false) {
$position = strlen($string) - strlen($treffer);
echo 'Erster Vokal "' . $treffer[0] . '" an Position: ' . $position . PHP_EOL;
}
// Wichtig · Fallstricke
Wichtig: Der Rückgabewert ist false, wenn kein Zeichen gefunden wird. Da false und ein leerer String in PHP als gleich bewertet werden können, sollte stets ein strikter Vergleich mit !== false verwendet werden, um Fehler zu vermeiden.
Sicherheitshinweis: strpbrk() eignet sich für eine einfache Blacklist-Prüfung auf Sonderzeichen, ersetzt jedoch keine vollständige Eingabevalidierung oder -sanitisierung. Für sicherheitskritische Eingabeverarbeitung (z. B. zur XSS- oder SQL-Injection-Vermeidung) sollten spezialisierte Funktionen wie htmlspecialchars() oder vorbereitete Datenbankabfragen eingesetzt werden.
Die Funktion ist nicht multibyte-fähig. Bei UTF-8-Strings mit Multibyte-Zeichen (z. B. Umlauten) können unerwartete Ergebnisse auftreten, da jedes Byte einzeln betrachtet wird. Für Multibyte-Szenarien sollte eine alternative Lösung auf Basis von mb_-Funktionen genutzt werden.