strrpos
strrpos($haystack, $needle, $offset)
Gibt die Position des letzten Vorkommens des Textes $needle in der Zeichenkette zurück (gezählt ab null). Findet sie den Text nicht, gibt sie false zurück. Praktisch, um eine Dateiendung abzutrennen oder einen Text am letzten Leerzeichen zu kürzen.
Parameter
- $haystack – die zu durchsuchende Zeichenkette.
- $needle – der gesuchte Text. Gesucht wird der ganze Text, nicht nur sein erstes Zeichen.
- $offset – optional. Eine positive Zahl = die Position, ab der gesucht wird. Eine negative Zahl = es wird nur bis zur angegebenen Position vom Ende der Zeichenkette gesucht.
Beispiele
var_dump(strrpos("a/b/c", "/")); // int(3)
var_dump(strrpos("abc", "x")); // bool(false)
// sie sucht den ganzen Text, nicht nur das erste Zeichen
var_dump(strrpos("a::b::c", "::")); // int(4)
// eine Dateiendung und der Name ohne Endung
$file = "photo.thumb.jpg";
echo substr($file, strrpos($file, ".") + 1); // jpg
echo substr($file, 0, strrpos($file, ".")); // photo.thumb
// ein negativer Offset – ein Vorkommen spätestens an der dritten Position vom Ende
var_dump(strrpos("a/b/c", "/", -3)); // int(1)
// einen Text am ganzen Wort kürzen (mit den mb_-Funktionen, damit auch Text mit Umlauten funktioniert)
$text = "Die Funktion strrpos findet das letzte Vorkommen";
$cut = mb_substr($text, 0, 25);
echo $cut; // Die Funktion strrpos find
echo mb_substr($cut, 0, mb_strrpos($cut, " ")) . "…"; // Die Funktion strrpos…
Worauf Sie achten sollten
- Vergleichen Sie das Ergebnis mit !== false. Das letzte Vorkommen kann an Position 0 stehen und eine gewöhnliche Bedingung würde das als „nicht gefunden“ werten.
- Die Position ist in Bytes. Für das Kürzen mit substr() passt das, mit mb_substr() und anderen Funktionen der Erweiterung mbstring verwenden Sie aber mb_strrpos(), die die Position in Zeichen zurückgibt.
- Sie unterscheidet Groß- und Kleinschreibung. strripos() sucht ohne diesen Unterschied.
- Die verwandte strrchr() gibt keine Position zurück, sondern direkt den Teil der Zeichenkette, und sie sucht nur ein einzelnes Zeichen.
- Bei einer Datei ohne Punkt gibt sie false zurück, und die Rechnung strrpos(…) + 1 ergibt dann 1. Sicherer findet die Endung pathinfo().
Verwandte Funktionen:
strpos()
strripos()
strrchr()
mb_strrpos()