Signatur
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
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.";
}
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.";
}
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');
// 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.