Start · Sprachen · PHP · Referenz · strripos

strripos

Funktion

Findet die Position des <strong>letzten</strong> Vorkommens von <code>needle</code> in <code>haystack</code>, ohne Unterscheidung von Groß- und Kleinschreibung.

seit PHP 5.0.0 Kategorie: string

Signatur

strripos(string $haystack, string $needle, int $offset = 0): int|false

Beschreibung

strripos() durchsucht den Eingabe-String haystack rückwärts nach dem letzten Vorkommen von needle und gibt dessen Position (0-basiert) zurück. Im Gegensatz zu strrpos() ist die Suche nicht Groß-/Kleinschreibungssensitiv, d. h. A und a werden gleich behandelt.

Der optionale Parameter offset verschiebt den Startpunkt der Suche: Ein positiver Wert lässt die Suche von der angegebenen Position vorwärts beginnen, während ein negativer Wert dazu führt, dass die letzten |offset| Zeichen vom Ende des Strings von der Suche ausgeschlossen werden.

Typische Einsatzgebiete sind Dateinamen-Parsing (z. B. Ermittlung der letzten Dateiendung unabhängig von Groß-/Kleinschreibung), URL-Analyse oder die Suche nach Keywords in Texten, bei denen Groß-/Kleinschreibung irrelevant ist.

Wird needle nicht gefunden, gibt die Funktion false zurück. Da Position 0 ebenfalls falsy ist, muss der Rückgabewert immer mit === geprüft werden.

Parameter

Name Typ Default Beschreibung
$haystack Pflicht string Der String, in dem gesucht wird.
$needle Pflicht string Der gesuchte Teilstring. Die Suche erfolgt unabhängig von Groß- und Kleinschreibung.
$offset int 0 Verschiebt den Suchbereich: Ein positiver Wert startet die Suche ab dieser Position von vorn; ein negativer Wert schließt die letzten |offset| Zeichen des Strings von der Suche aus.

Rückgabewert

Typ
int|false
Beschreibung
Die 0-basierte Position des letzten Vorkommens von needle in haystack, oder false, wenn needle nicht gefunden wurde. Achtung: Immer mit === auf false prüfen, da Position 0 bei loser Typprüfung ebenfalls als falsy gilt.

Beispiele

Grundlegende Suche ohne Berücksichtigung der Groß-/Kleinschreibung

<?php
$text = 'Hallo Welt, hallo PHP!';
$pos = strripos($text, 'hallo');

if ($pos !== false) {
    echo "Letztes Vorkommen von 'hallo' an Position: " . $pos;
} else {
    echo "Nicht gefunden.";
}
Letztes Vorkommen von 'hallo' an Position: 12

Dateiendung unabhängig von Groß-/Kleinschreibung ermitteln

<?php
$dateiname = 'Urlaubsfoto.JPEG';
$dotPos = strripos($dateiname, '.');

if ($dotPos !== false) {
    $endung = strtolower(substr($dateiname, $dotPos + 1));
    echo 'Dateiendung: ' . $endung;
} else {
    echo 'Keine Dateiendung gefunden.';
}
Dateiendung: jpeg

Verwendung eines negativen Offsets

<?php
$text = 'PHP ist toll. PHP macht Spaß. php rocks.';

// Suche nur in den ersten (strlen - 10) Zeichen
$pos = strripos($text, 'php', -10);

echo $pos !== false
    ? "Gefunden an Position: " . $pos
    : "Nicht im eingeschränkten Bereich gefunden.";
Gefunden an Position: 14

// Wichtig · Fallstricke

Typfalle: Der Rückgabewert false und die Position 0 sind bei loser Typprüfung nicht unterscheidbar. Verwende daher stets den strikten Vergleich === false, um zu prüfen, ob die Suche erfolglos war.

Multibyte-Strings: strripos() arbeitet Byte-basiert und ist nicht für Multibyte-Encodings (z. B. UTF-8 mit mehrbyteigen Zeichen) geeignet. Für solche Fälle sollte mb_strripos() verwendet werden.