(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Findet die Position des letzten Vorkommens eines Teilstrings innerhalb einer Zeichenkette
Gibt die numerische Position des letzten Vorkommens von
needle
innerhalb der Zeichenkette
haystack
zurück.
haystack
Die Zeichenkette in der gesucht werden soll.
needle
Die Zeichenkette, nach der gesucht werden soll.
Wenn der Parameter needle
keine Zeichenkette ist,
wird er vor PHP 8.0.0 in eine Ganzzahl umgewandelt und als ordinaler Wert
eines Zeichens betrachtet. Dieses Verhalten gilt seit PHP 7.3.0 als veraltet
und es wird dringend empfohlen, sich nicht darauf zu verlassen. Ist das
Verhalten gewünscht, so sollte needle
explizit in
eine Zeichenkette umgewandelt werden oder explizit die Funktion
chr() aufgerufen werden.
offset
Wenn null (0
) oder positiv, wird die Suche von links
nach rechts durchgeführt, wobei die ersten offset
Bytes von haystack
übersprungen werden.
Wenn negativ, beginnt die Suche offset
Bytes von
rechts statt vom Anfang von haystack
. Die Suche
wird von rechts nach links durchgeführt, wobei nach dem ersten Vorkommen
von needle
ab dem ausgewählten Byte gesucht wird.
Hinweis:
Dies bedeutet, dass das letzte Vorkommen von
needle
an oder vor den letztenoffset
Bytes gesucht wird.
Gibt die Position des Vorkommens des gesuchten Teilstrings relativ
zum Anfang der Zeichenkette haystack
(unabhängig
von Suchrichtung oder Offset) zurück.
Hinweis: Positionen in Zeichenketten werden ab 0 gezählt, und nicht ab 1.
Gibt false
zurück, falls der gesuchte Teilstring nicht gefunden wurde.
Diese Funktion kann sowohl das
boolsche false
zurückliefern, als auch einen nicht-boolschen Wert, welcher zu false
ausgewertet wird.
Weitere Informationen entnehmen Sie bitte dem Abschnitt über die
boolschen Typen. Benutzen Sie deshalb
den === Operator,
um den Rückgabewert dieser Funktion zu überprüfen.
Version | Beschreibung |
---|---|
8.0.0 |
needle akzeptiert nun eine leere Zeichenkette.
|
8.0.0 |
Die Übergabe eines Integer als needle wird
nicht mehr unterstützt.
|
7.3.0 |
Die Übergabe eines Integer als needle wird
missbilligt.
|
Beispiel #1 Prüfen ob needle in haystack vorkommt
Es liegt nahe, einen Fehler bei der Auswertung der Rückgabewerte von "Zeichen an Position 0 gefunden" und "Zeichen nicht gefunden" zu begehen. Am einfachsten finden Sie den Unterschied wie folgt heraus:
<?php
$pos = strrpos($meinstring, "b");
if ($pos === false) { // Beachten sie die drei Gleichheitszeichen
// nicht gefunden ...
}
?>
Beispiel #2 Mit Offsets suchen
<?php
$foo = "0123456789a123456789b123456789c";
// Sucht '0' ab dem nullten Byte (vom Anfang an)
var_dump(strrpos($foo, '0', 0));
// Sucht '0' ab dem ersten Byte (nach Byte "0")
var_dump(strrpos($foo, '0', 1));
// Sucht '7' ab dem 21ten Byte (nach Byte 20)
var_dump(strrpos($foo, '7', 20));
// Sucht '7' ab dem 29ten Byte (nach Byte 28)
var_dump(strrpos($foo, '7', 28));
// Sucht '7' von rechts nach links ab dem fünften Byte vom Ende
var_dump(strrpos($foo, '7', -5));
// Sucht 'c' von rechts nach links ab dem zweiten Byte vom Ende
var_dump(strrpos($foo, 'c', -2));
// Sucht '9c' von rechts nach links ab dem zweiten Byte vom Ende
var_dump(strrpos($foo, '9c', -2));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)