In diesem Tutorial lernen Sie, wie Sie ein Zeichen innerhalb einer Zeichenkette suchen und die Zeichenkette so bearbeiten, dass nur der Teil vom Auftreten des Zeichens bis zum Ende des Strings zurückgegeben wird.
Die Funktion, die wir dazu verwenden, ist strrchr(). Diese Funktion erfordert zwei Parameter. Mit dem ersten Parameter übergibt man die Zeichenkette, die man bearbeiten will und der zweite Parameter erfordert das Zeichen, das gesucht werden soll.
Beispiel 1:
<?php
/*
* Created on 28.12.2009 by Nico Schubert
*/
$zeichenkette = 'Das letzte Auftreten eines
Zeichens in einer Zeichenkette suchen und den
Rest zurückgeben.';
$rest_zeichenkette = strrchr($zeichenkette, "ü");
echo $rest_zeichenkette;
?>
Ausgabe des Beispiel 1:
„ückgeben.“
Erklärung zu Beispiel 1:
Zunächst wird eine neue Zeichenkette mit der Variable $zeichenkette erstellt. Diese Zeichenkette soll nun bearbeitet werden, daher übergeben wir der Funktion strrchr() als ersten Parameter die Variable $zeichenkette und als zweiten Parameter legen wir den Buchstaben „ü“ fest. Das Ergebnis, das die Funktion strrchr() zurückliefert, wird anschließend in eine neue Variable mit der Bezeichnung $rest_zeichenkette gespeichert und mit dem Befehl echo ausgegeben.
Was passiert aber, wenn das gesuchte Zeichen nicht in der Zeichenkette vorhanden ist? Dazu schauen wir uns das folgende Beispiel an.
Beispiel 2:
<?php
/*
* Created on 28.12.2009 by Nico Schubert
*/
$zeichenkette = 'Keine Ausgabe, da nichts
gefunden.';
$rest_zeichenkette = strrchr($zeichenkette, "ü");
var_dump($rest_zeichenkette);
?>
Ausgabe des Beispiel 2:
„bool(false)“
Erklärung zu Beispiel 2:
Die Funktion var_dump() zeigt uns den Typ und den Wert einer beliebigen Variable an. In diesem Beispiel hat die Variable $rest_zeichenkette den Wert „False“ vom Typ Boolean. Das bedeutet also, dass die Funktion strrchr() den booleschen Wert „False“ zurückgibt, wenn das gesuchte Zeichen nicht in der Zeichenkette vorhanden ist. Daher hat die Variable $rest_zeichenkette in diesem Beispiel den Wert „False“. Zum Überprüfen, welcher Wert in der Variable ist, verwenden Sie var_dump().
Fragen und Antworten zu der PHP-Funktion
- Was macht die PHP-Funktion strrchr()?
- Die PHP-Funktion strrchr() gibt den Teil eines Strings zurück, der mit dem letzten Vorkommen eines bestimmten Zeichens beginnt.
- Wie wird strrchr() in PHP verwendet?
- strrchr() kann in PHP verwendet werden, um den Teil eines Strings zu ermitteln, der mit dem letzten Vorkommen eines bestimmten Zeichens beginnt. Es nimmt zwei Argumente an: den String und das Zeichen, das Sie im String suchen möchten.
- Welche Parameter akzeptiert strrchr()?
- Die PHP-Funktion strrchr() akzeptiert zwei Parameter – den String und das Zeichen, nach dem gesucht werden soll.
- Kann man die Funktion strrchr auch für andere Datentypen als Strings verwenden?
- Nein, die Funktion strrchr kann nur für strings verwendet werden.
- Gibt es ähnliche Funktionen wie strrchr in anderen Programmiersprachen?
- Ja, es gibt viele ähnliche Funktionen in anderen Programmiersprachen wie Java und C++ sowie vielen anderen Sprachen, die oft als „String Manipulation“ bezeichnet werden. Beispiele sind substr(), lastIndexOf(), etc..
- Können mehrere Argumente an strrchr übergeben werden?
- Nein, es können nur zwei Argumente (der String und das gesuchte Zeichen) übergeben werden; mehr Argumente sind nicht erlaubt oder erforderlich.
- Was ist der Rückgabewert von strrchr?
- Der Rückgabewert von Strrchr ist der Teil des Strings ab dem letzten Vorkommen des angegebenen Zeichens bis zum Ende des Strings oder FALSE im Fehlerfall.
- Was passiert bei Nichterfüllung der Bedingung beim Aufruf von strrchr?
- Wenn keine Bedingung erfüllt ist (d. h. kein solches Zeichen im angegebenen String vorhanden ist), gibt die Funktion FALSE zurück.
- Kann man auch negative Werte für das Suchzeichen an strrchr übergeben?
- Nein, negative Werte können für das Suchzeichen nicht übergeben werden. Nur positive Zahlen sind erlaubt.
- Kann man auch leere Strings als Parameter an strrchr übergeben?
- Ja, leere Strings können als Parameter an strrchr übergeben werden, aber es hat, keinen Sinn, weil es keine Ergebnisse liefern kann.
Praxisbeispiel: Dateiendung ermitteln
Ein klassischer Anwendungsfall für strrchr() ist das Auslesen der Dateiendung aus einem Dateipfad. Da Dateinamen mehrere Punkte enthalten können, suchen Sie gezielt nach dem letzten Punkt.
<?php
$datei = 'dokument.backup.2024.pdf';
$endung = strrchr($datei, '.');
echo $endung;
/* Ausgabe: .pdf */
/* Nur die Endung ohne Punkt: */
echo substr(strrchr($datei, '.'), 1);
/* Ausgabe: pdf */
?>
Die Funktion strrchr() findet den letzten Punkt und gibt alles ab dieser Stelle zurück. Mit substr() können Sie den führenden Punkt entfernen, wenn Sie nur die reine Endung benötigen.
Praxisbeispiel: Domain aus E-Mail-Adresse extrahieren
Mit strrchr() können Sie auch den Domain-Teil einer E-Mail-Adresse auslesen. Da das @-Zeichen in einer gültigen E-Mail nur einmal vorkommt, funktioniert das zuverlässig.
<?php
$email = 'max.mustermann@beispiel.de';
$domain = substr(strrchr($email, '@'), 1);
echo $domain;
/* Ausgabe: beispiel.de */
?>
strrchr() vs. strrpos(): Wann welche Funktion?
Beide Funktionen suchen das letzte Vorkommen eines Zeichens. Der Unterschied liegt im Rückgabewert: strrchr() gibt den Teilstring ab dem gefundenen Zeichen zurück, strrpos() gibt nur die Position als Zahl zurück.
| Funktion | Rückgabe | Beispiel mit 'hallo.welt.php' |
|---|
strrchr() | Teilstring ab dem Zeichen | .php |
strrpos() | Position (int) | 10 |
strstr() | Teilstring ab dem ersten Vorkommen | .welt.php |
Wenn Sie den Teilstring benötigen, verwenden Sie strrchr(). Wenn Sie nur die Position brauchen, ist strrpos() effizienter.