Signatur
Beschreibung
strchr() ist ein vollständiger Alias der Funktion strstr() und verhält sich in allen Aspekten identisch zu ihr. Die Funktion durchsucht den String $haystack nach dem ersten Vorkommen von $needle und gibt den Teil des Strings ab diesem Vorkommen (inklusive des Suchstrings selbst) zurück.
Wird der optionale Parameter $before_needle auf true gesetzt, gibt die Funktion stattdessen den Teil des Strings vor dem ersten Vorkommen des Suchstrings zurück. Wird $needle als Integer übergeben, wird er als ASCII-Zeichenwert interpretiert — dieses Verhalten stammt aus C-Implementierungen und ist in modernem PHP-Code zu vermeiden.
Die Funktion ist case-sensitiv. Für eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung steht stristr() zur Verfügung. Da strchr() lediglich ein Alias ist, empfiehlt es sich für neuen Code, direkt strstr() zu verwenden, um die Lesbarkeit zu verbessern.
Typische Anwendungsfälle sind das Extrahieren von Dateiendungen, Domänen aus E-Mail-Adressen oder beliebigen Teilstrings nach einem Trennzeichen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $haystack Pflicht | string | Der Eingabe-String, in dem gesucht wird. | |
| $needle Pflicht | string|int | Der gesuchte Teilstring. Wird ein Integer übergeben, wird er als ASCII-Zeichenwert interpretiert (veraltet; besser einen String übergeben). | |
| $before_needle | bool | false | Wenn true, wird der Teil des Strings vor dem ersten Vorkommen von $needle zurückgegeben. |
Rückgabewert
$needle zurück. Wird $needle nicht gefunden, wird false zurückgegeben.Beispiele
Domain aus einer E-Mail-Adresse extrahieren
<?php
$email = 'benutzer@example.com';
// Alles ab '@' (inklusive '@') zurückgeben
$domain_mit_at = strchr($email, '@');
echo $domain_mit_at; // @example.com
// Nur den Teil vor '@' zurückgeben
$benutzer = strchr($email, '@', before_needle: true);
echo $benutzer; // benutzer
Dateiendung aus einem Pfad ermitteln
<?php
$dateiname = 'bericht_2024.pdf';
$ergebnis = strchr($dateiname, '.');
if ($ergebnis !== false) {
echo 'Erweiterung: ' . $ergebnis; // .pdf
} else {
echo 'Keine Dateiendung gefunden.';
}
Rückgabe false wenn needle nicht gefunden
<?php
$text = 'Hallo Welt';
$ergebnis = strchr($text, '@');
if ($ergebnis === false) {
echo 'Zeichen nicht gefunden.';
}
// Wichtig · Fallstricke
Hinweis: strchr() ist lediglich ein Alias von strstr(). Es gibt keinen funktionalen Unterschied zwischen beiden. In neuem Code sollte aus Gründen der Konsistenz und Lesbarkeit bevorzugt strstr() verwendet werden.
Achtung bei Typ-Vergleichen: Da die Funktion false zurückgibt, wenn $needle nicht gefunden wird, ist ein strikter Vergleich mit === false notwendig. Ein einfacher if (!$ergebnis)-Check würde auch einen leeren String als nicht gefunden werten.
Die Übergabe eines Integers als $needle zur Interpretation als ASCII-Wert gilt als veraltet und sollte vermieden werden. Nutze stattdessen chr() um den Integer explizit in ein Zeichen umzuwandeln.