W3docs

stripos()

Die Funktion stripos() in PHP sucht die Position des ersten Vorkommens eines Teilstrings in einem String ohne Berücksichtigung der Groß-/Kleinschreibung.

Einführung

stripos() sucht die Position des ersten Vorkommens eines Teilstrings in einem String, ohne die Groß- und Kleinschreibung zu berücksichtigen. Die Funktion gibt den nullbasierten Index zurück, an dem die Übereinstimmung beginnt, oder false, wenn der Teilstring nicht gefunden wird.

Das i im Namen steht für case-insensitive: "PHP", "php" und "Php" werden alle gleich behandelt. Falls eine Suche mit Berücksichtigung der Groß-/Kleinschreibung benötigt wird, verwende strpos(). Diese Seite behandelt die Syntax, den kritischen !== false-Fallstrick, den optionalen $offset-Parameter und die Beziehung von stripos() zu anderen Positionsfunktionen.

Syntax

stripos(string $haystack, string $needle, int $offset = 0): int|false
ParameterBeschreibung
$haystackDer String, in dem gesucht wird.
$needleDer Teilstring, nach dem gesucht wird.
$offsetOptional. Der Index in $haystack, ab dem die Suche beginnt. Standardmäßig 0 (der Anfang). Ein negativer Offset zählt vom Ende des Strings.

Rückgabewert: die nullbasierte Position der ersten Übereinstimmung (ein int) oder false, wenn $needle nicht gefunden wird.

Ein einfaches Beispiel

php— editable, runs on the server

Der Suchstring "fox" ist kleingeschrieben, aber der Ausgangsstring enthält "FOX". Da stripos() die Groß-/Kleinschreibung ignoriert, wird trotzdem eine Übereinstimmung gefunden und folgendes ausgegeben:

Found 'fox' at position 16

Wird hier stattdessen strpos() verwendet, wäre das Ergebnis false, da die Schreibweise abweicht.

Der !== false-Fallstrick

Dies ist der häufigste Fehler bei stripos() (und allen *pos()-Funktionen). Wenn eine Übereinstimmung ganz am Anfang des Strings gefunden wird, ist der Rückgabewert 0 – und 0 ist in PHP falsy. Eine lockere Prüfung wie if (stripos(...)) würde eine tatsächliche Übereinstimmung als „nicht gefunden" behandeln:

<?php

$pos = stripos("Hello world", "hello");

// Wrong: 0 is falsy, so this branch runs even though there IS a match
if ($pos) {
  echo "loose check: found\n";
} else {
  echo "loose check: NOT found (wrong!)\n";
}

// Correct: compare against false with the strict !== operator
if ($pos !== false) {
  echo "strict check: found at position $pos\n";
} else {
  echo "strict check: not found\n";
}

Ausgabe:

loose check: NOT found (wrong!)
strict check: found at position 0

Vergleiche das Ergebnis immer mit !== false, wenn du nur wissen möchtest, ob der Teilstring vorhanden ist.

Den Parameter $offset verwenden

Das dritte Argument ermöglicht es, die Suche mitten im String zu beginnen – praktisch, um das zweite (oder spätere) Vorkommen zu finden:

<?php

$text = "PHP is great. PHP is everywhere.";

$first  = stripos($text, "php");        // start at 0
$second = stripos($text, "php", $first + 1); // skip past the first match

echo "First occurrence:  $first\n";
echo "Second occurrence: $second\n";

Ausgabe:

First occurrence:  0
Second occurrence: 14

Ein praktisches Beispiel: Schlüsselwortfilter ohne Groß-/Kleinschreibung

Da stripos() die Schreibweise ignoriert, eignet es sich gut für „Enthält dieser Text X?"-Prüfungen, etwa um Nachrichten zu markieren, die ein verbotenes Wort enthalten – unabhängig davon, wie es geschrieben wurde:

<?php

$message = "Get this AMAZING deal now!";
$banned  = ["amazing", "free", "winner"];

foreach ($banned as $word) {
  if (stripos($message, $word) !== false) {
    echo "Blocked: contains '$word'\n";
    break;
  }
}

Ausgabe:

Blocked: contains 'amazing'

Verwandte Funktionen

FunktionGroß-/KleinschreibungSucht von
stripos()IgnoriertAnfang → erstes Vorkommen
strpos()BerücksichtigtAnfang → erstes Vorkommen
strripos()IgnoriertEnde → letztes Vorkommen
stristr()IgnoriertGibt den übereinstimmenden Teilstring zurück, nicht seine Position

Siehe auch substr() zum Extrahieren von Text, wenn du eine Position hast, und str_replace() für Ersetzungen mit Berücksichtigung der Groß-/Kleinschreibung.

Fazit

stripos() gibt die nullbasierte Position des ersten Vorkommens eines Teilstrings zurück, ohne Berücksichtigung der Groß-/Kleinschreibung, oder false, wenn keins gefunden wird. Denke daran, das Ergebnis mit !== false zu prüfen, damit eine Übereinstimmung an Position 0 nicht als „nicht gefunden" gewertet wird. Verwende $offset, um spätere Vorkommen zu finden, und greife auf strpos() zurück, wenn die Schreibweise relevant ist.

Übungen

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