Start · Sprachen · PHP · Referenz · mb_strripos

mb_strripos

Funktion

Findet die Position des letzten Vorkommens eines Teilstrings in einem String, ohne Groß-/Kleinschreibung zu beachten (Multibyte-sicher).

seit PHP 5.2.0 Kategorie: string

Signatur

mb_strripos(string $haystack, string $needle, int $offset = 0, ?string $encoding = null): int|false

Beschreibung

mb_strripos() durchsucht den String $haystack nach dem letzten Vorkommen von $needle und gibt dessen Position (als Zeichenindex, nicht Byte-Offset) zurück. Im Gegensatz zur Byte-orientierten Funktion strripos() arbeitet diese Funktion korrekt mit Multibyte-Zeichenkodierungen wie UTF-8 oder UTF-16 zusammen.

Die Suche ist nicht Groß-/Kleinschreibungs-sensitiv: ä, Ä, é und É werden als gleich betrachtet, sofern die gewählte Kodierung dies unterstützt. Damit eignet sich die Funktion ideal für Suchanfragen in mehrsprachigen Texten.

Über den Parameter $offset lässt sich festlegen, ab welcher Zeichenposition die Suche beginnen soll. Ein positiver Wert verschiebt den Startpunkt vom Anfang des Strings nach rechts; ein negativer Wert startet die Suche vom Ende des Strings aus und schließt die letzten |offset| Zeichen aus der Suche aus.

Wird $needle nicht gefunden, gibt die Funktion false zurück. Da die Position 0 ein gültiger Rückgabewert ist, muss der Rückgabewert mit dem Identitätsoperator === auf false geprüft werden.

Parameter

Name Typ Default Beschreibung
$haystack Pflicht string Der Eingabe-String, in dem gesucht wird.
$needle Pflicht string Der gesuchte Teilstring. Die Suche ignoriert Groß-/Kleinschreibung.
$offset int 0 Startposition der Suche als Zeichenindex. Positive Werte versetzen den Startpunkt vom Anfang des Strings, negative Werte vom Ende. Die Suche findet das letzte Vorkommen innerhalb des so bestimmten Bereichs.
$encoding ?string null Die zu verwendende Zeichenkodierung, z. B. 'UTF-8'. Wird null übergeben oder der Parameter weggelassen, wird die interne Kodierung verwendet (gesetzt via mb_internal_encoding()).

Rückgabewert

Typ
int|false
Beschreibung
Die Position (Zeichenindex, beginnend bei 0) des letzten Vorkommens von $needle in $haystack, oder false, wenn $needle nicht gefunden wurde. Immer mit === auf false prüfen, da Position 0 ein gültiger Rückgabewert ist.

Beispiele

Einfache Suche ohne Beachtung der Groß-/Kleinschreibung

<?php
$text = 'Hallo Welt, hallo PHP-Welt!';

$pos = mb_strripos($text, 'WELT', 0, 'UTF-8');

if ($pos !== false) {
    echo "Letztes Vorkommen von 'WELT' (Groß/Klein ignoriert) an Position: " . $pos;
} else {
    echo "Nicht gefunden.";
}
Letztes Vorkommen von 'WELT' (Groß/Klein ignoriert) an Position: 22

Suche mit Multibyte-Zeichen (UTF-8, Umlaute)

<?php
mb_internal_encoding('UTF-8');

$text = 'Über die Überwindung von Überraschungen';

// Letztes Vorkommen von 'über' (ohne Beachtung von Groß/Klein)
$pos = mb_strripos($text, 'über');

if ($pos !== false) {
    echo "Position des letzten 'über': " . $pos . "\n";
    echo "Zeichen ab dieser Position: " . mb_substr($text, $pos, 4);
} else {
    echo "Nicht gefunden.";
}
Position des letzten 'über': 25 Zeichen ab dieser Position: Über

Verwendung eines negativen Offsets

<?php
$text = 'apfel birne apfel mango apfel';

// Suche das letzte 'APFEL', aber die letzten 5 Zeichen ausschließen
$pos = mb_strripos($text, 'APFEL', -5, 'UTF-8');

echo "Position: " . ($pos !== false ? $pos : 'nicht gefunden');
Position: 13

// Wichtig · Fallstricke

Rückgabewert-Prüfung: Da 0 ein gültiger Rückgabewert ist, darf der Vergleich nie mit ==, sondern muss stets mit === erfolgen: if ($pos === false) { ... }.

Byte- vs. Zeichenposition: Der Rückgabewert ist ein Zeichenindex, kein Byte-Offset. Bei UTF-8-Strings mit Multibyte-Zeichen weicht er vom Byte-Offset ab. Für Byte-Operationen sollte strripos() verwendet werden, für Multibyte-Strings ist mb_strripos() die richtige Wahl.

Encoding-Fallback: Wenn kein $encoding angegeben wird, greift die Funktion auf die mit mb_internal_encoding() gesetzte Kodierung zurück. Es empfiehlt sich, diese am Anfang des Skripts explizit auf 'UTF-8' zu setzen.