Start · Sprachen · PHP · Referenz · stristr

stristr

Funktion

Durchsucht einen String nach einem Teilstring (ohne Beachtung von Groß-/Kleinschreibung) und gibt den Teil ab dem Treffer zurück.

seit PHP 4.0.0 Kategorie: string

Signatur

stristr(string $haystack, string $needle, bool $before_needle = false): string|false

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

Typ
string|false
Beschreibung
Gibt den Teilstring zurück, der ab dem ersten Vorkommen von $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
string(9) "WEBSEITE!"

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
Nutzer

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) { ... }
Positives Feedback gefunden.

// 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.