Signatur
Beschreibung
stristr() funktioniert identisch zu strstr(), ignoriert jedoch Unterschiede zwischen Groß- und Kleinschreibung beim Vergleich. Die Funktion sucht im Eingabe-String $haystack nach dem ersten Vorkommen von $needle und gibt den Teilstring ab diesem Fundort bis zum Ende des Strings zurück.
Mit dem Parameter $before_needle lässt sich steuern, welcher Teil des Strings zurückgegeben wird: Ist er true, gibt die Funktion den Teil vor dem Treffer zurück; ist er false (Standard), den Teil ab dem Treffer. Die Großschreibung im zurückgegebenen String entspricht dabei der Originalschreibung aus $haystack.
Typische Anwendungsfälle sind die Suche nach Schlüsselwörtern in Benutzereingaben, E-Mail-Adressen oder beliebigen Texten, bei denen die Schreibweise des Suchbegriffs nicht bekannt oder irrelevant ist. Soll nur geprüft werden, ob ein Teilstring vorhanden ist, sollte stripos() bevorzugt werden, da es effizienter ist.
Für multibyte-fähige Zeichenkodierungen (z. B. UTF-8) ist stattdessen mb_stristr() zu verwenden, da stristr() byteweise arbeitet und bei Multibyte-Zeichen unerwartete Ergebnisse liefern kann.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $haystack Pflicht | string | Der zu durchsuchende Eingabe-String. | |
| $needle Pflicht | string | Der gesuchte Teilstring. Die Groß-/Kleinschreibung wird beim Vergleich ignoriert. | |
| $before_needle | bool | false | Ist dieser Wert true, wird der Teil des Strings vor dem ersten Treffer zurückgegeben. Standardmäßig (false) wird der Teil ab dem Treffer (einschließlich des Treffers) zurückgegeben. |
Rückgabewert
$needle (oder davor, wenn $before_needle = true) bis zum Ende des Strings reicht. Wird $needle nicht gefunden, gibt die Funktion false zurück.Beispiele
Einfache Suche ohne Beachtung der Groß-/Kleinschreibung
<?php
$text = 'Willkommen auf unserer WEBSEITE!';
$treffer = stristr($text, 'webseite');
var_dump($treffer);
// Groß-/Kleinschreibung des Originaltexts bleibt erhalten
Teil vor dem Treffer ermitteln
<?php
$email = 'Nutzer@Example.COM';
$lokalerTeil = stristr($email, '@example.com', true);
echo $lokalerTeil; // Gibt den lokalen Teil der E-Mail-Adresse aus
Prüfen ob ein Keyword im Text vorkommt
<?php
$kommentar = 'Dieses Produkt ist SUPER toll!';
if (stristr($kommentar, 'super') !== false) {
echo 'Positives Feedback gefunden.';
} else {
echo 'Kein positives Feedback.';
}
// Hinweis: Für reine Existenzprüfung ist stripos() effizienter:
// if (stripos($kommentar, 'super') !== false) { ... }
// Wichtig · Fallstricke
Rückgabe und Schreibweise: Der zurückgegebene Teilstring bewahrt immer die originale Groß-/Kleinschreibung aus $haystack, unabhängig davon, wie $needle angegeben wurde.
Multibyte-Zeichen: stristr() ist nicht multibyte-sicher. Bei UTF-8-kodierten Strings mit Umlauten oder anderen Nicht-ASCII-Zeichen sollte mb_stristr() verwendet werden, um fehlerhafte Ergebnisse zu vermeiden.
Strikt vergleichen: Da false zurückgegeben wird, wenn $needle nicht gefunden wird, und ein leerer String "" ebenfalls falsy ist, sollte der Rückgabewert stets mit !== false verglichen werden, nicht mit == false oder als einfacher Boolean.