Signatur
Beschreibung
mb_strrichr() durchsucht den String $haystack nach dem letzten Vorkommen des ersten Zeichens aus $needle und gibt dabei die Groß- und Kleinschreibung nicht zu berücksichtigen (case-insensitive). Die Funktion arbeitet Multibyte-sicher, ist also für Zeichenkodierungen wie UTF-8 oder ISO-8859-1 geeignet.
Mit dem Parameter $before_needle lässt sich steuern, ob der Teil vor oder ab dem gefundenen Zeichen zurückgegeben wird. Standardmäßig (false) liefert die Funktion den Teilstring vom letzten Vorkommen des Zeichens bis zum Ende des Strings.
Diese Funktion ist besonders nützlich, wenn man z. B. Dateinamen, Pfade oder Tokens aus Multibyte-Strings extrahieren möchte, ohne sich auf ASCII-Groß-/Kleinschreibungsregeln verlassen zu wollen. Sie ergänzt mb_strrchr() um die Groß-/Kleinschreibungstoleranz.
Wird das gesuchte Zeichen nicht gefunden, gibt die Funktion false zurück. Zur Prüfung des Rückgabewerts sollte immer der strikte Vergleich (===) eingesetzt werden, da ein leerer String und false bei losem Vergleich gleichwertig sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $haystack Pflicht | string | Der Eingabe-String, in dem gesucht wird. | |
| $needle Pflicht | string | Das Suchzeichen (nur das erste Zeichen dieses Strings wird verwendet). Die Suche erfolgt case-insensitive. | |
| $before_needle | bool | false | Wenn true, wird der Teil des Strings vor dem gefundenen Zeichen zurückgegeben; bei false (Standard) der Teil ab dem gefundenen Zeichen (inklusive). |
| $encoding | ?string | null | Die Zeichenkodierung, z. B. 'UTF-8'. Wird null oder nichts übergeben, verwendet PHP die interne Standardkodierung (mb_internal_encoding()). |
Rückgabewert
false zurück, wenn das Zeichen im String nicht vorkommt. Zur sicheren Prüfung stets === false verwenden.Beispiele
Letztes Vorkommen eines Zeichens (Groß-/Kleinschreibung ignoriert)
<?php
$string = 'Hallo Welt, Hallo PHP';
// Sucht letztes Vorkommen von 'h' oder 'H' (case-insensitive)
$result = mb_strrichr($string, 'h', false, 'UTF-8');
echo $result; // 'Hallo PHP'
$before = mb_strrichr($string, 'h', true, 'UTF-8');
echo $before; // 'Hallo Welt, '
Dateiendung aus UTF-8-Dateinamen extrahieren
<?php
$dateiname = 'Präsentation_Überblick.PDF';
// Letzten Punkt suchen (case-insensitive, hier gleich)
$erweiterung = mb_strrichr($dateiname, '.', false, 'UTF-8');
if ($erweiterung !== false) {
echo 'Dateiendung: ' . mb_strtolower($erweiterung, 'UTF-8');
} else {
echo 'Keine Dateiendung gefunden.';
}
Rückgabewert sicher prüfen
<?php
$text = 'Multibyte UTF-8 Text: äöü';
$gefunden = mb_strrichr($text, 'X', false, 'UTF-8');
if ($gefunden === false) {
echo 'Zeichen nicht gefunden.';
} else {
echo 'Gefunden: ' . $gefunden;
}
// Wichtig · Fallstricke
Achtung: Nur das erste Zeichen von $needle wird für die Suche verwendet. Wenn $needle ein mehrzeichiger String ist, werden alle Zeichen außer dem ersten ignoriert.
Bei der Nutzung mit Multibyte-Zeichenkodierungen (z. B. UTF-8) sollte stets explizit eine Kodierung angegeben werden, um unerwartetes Verhalten bei unterschiedlichen Server-Standardkonfigurationen zu vermeiden.
Die Funktion ist das Multibyte-Äquivalent zu strrichr() – diese Standardfunktion existiert in PHP allerdings nicht nativ; für Byte-Strings ohne Multibyte-Relevanz kann strrchr() (case-sensitive) genutzt werden.