Start · Sprachen · PHP · Referenz · mb_rtrim

mb_rtrim

Funktion

Entfernt Leerraum oder angegebene Zeichen am Ende eines Multibyte-Strings – die multibyte-sichere Entsprechung von <code>rtrim()</code>.

seit PHP 8.4.0 Kategorie: string

Signatur

mb_rtrim(string $string, string|null $characters = null, string $encoding = ini_get('mbstring.internal_encoding')): string

Beschreibung

mb_rtrim() entfernt alle führenden (rechtsseitigen) Zeichen eines Strings, die in der optionalen Zeichenliste enthalten sind. Wird keine Zeichenliste angegeben, werden die Standard-Whitespace-Zeichen entfernt – darunter auch Multibyte-Leerzeichen wie das UTF-8-Leerzeichen (U+00A0, geschütztes Leerzeichen) oder das ideografische Leerzeichen (U+3000), die von der klassischen rtrim()-Funktion nicht erkannt werden.

Die Funktion ist besonders dann sinnvoll, wenn mit mehrsprachigen Inhalten oder Texten gearbeitet wird, die Zeichen außerhalb des ASCII-Bereichs enthalten. rtrim() operiert byteweise und kann Multibyte-Zeichen beschädigen oder übersehen; mb_rtrim() hingegen berücksichtigt die angegebene (oder systemweit konfigurierte) Zeichenkodierung korrekt.

Der optionale Parameter $characters akzeptiert eine Liste von Zeichen, die entfernt werden sollen. Die Angabe funktioniert analog zu rtrim(): Jedes Zeichen in der Liste wird einzeln als Trimmkandidat betrachtet – Zeichenbereiche (a..z) werden nicht unterstützt. Bei null wird der Standard-Whitespace-Satz verwendet.

Der Parameter $encoding legt die Zeichenkodierung fest, in der der String interpretiert wird. Er sollte explizit angegeben werden, wenn die Anwendung nicht ausschließlich mit UTF-8 arbeitet.

Parameter

Name Typ Default Beschreibung
$string Pflicht string Der Eingabe-String, dessen rechtes Ende bereinigt werden soll.
$characters string|null null Optionale Zeichenliste als String. Jedes Zeichen in dieser Liste wird vom Ende des Strings entfernt. Bei null werden Standard-Whitespace-Zeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche sowie Multibyte-Leerzeichen) entfernt.
$encoding string ini_get('mbstring.internal_encoding') Die Zeichenkodierung des Strings, z. B. 'UTF-8' oder 'ISO-8859-1'. Standardmäßig wird die intern konfigurierte Kodierung der mbstring-Extension verwendet.

Rückgabewert

Typ
string
Beschreibung
Den bereinigten String ohne die entfernten rechtsseitigen Zeichen. Der Rückgabewert ist immer ein String; der ursprüngliche String bleibt unverändert.

Beispiele

Standard-Whitespace am Ende eines UTF-8-Strings entfernen

<?php
// UTF-8-String mit einem geschützten Leerzeichen (U+00A0) am Ende
$text = "Hallo Welt\xc2\xa0";

// rtrim() erkennt das Multibyte-Leerzeichen NICHT
$mitRtrim = rtrim($text);
var_dump(strlen($mitRtrim)); // 12 – Leerzeichen bleibt

// mb_rtrim() entfernt es korrekt
$mitMbRtrim = mb_rtrim($text, encoding: 'UTF-8');
var_dump(strlen($mitMbRtrim)); // 10 – Leerzeichen entfernt
echo $mitMbRtrim; // Hallo Welt
int(12) int(10) Hallo Welt

Bestimmte Zeichen am Ende eines Strings entfernen

<?php
// Satzzeichen und Anführungszeichen am Ende eines deutschen Texts entfernen
$text = "Ein Beispieltext…»»";
$bereinigt = mb_rtrim($text, '»…', 'UTF-8');
echo $bereinigt; // Ein Beispieltext
Ein Beispieltext

Praktischer Einsatz beim Einlesen von Benutzereingaben

<?php
// Simulierte Benutzereingabe mit diversen Leerzeichen und Zeilenumbrüchen
$eingabe = "  田中太郎  \n\t";
$bereinigt = mb_rtrim($eingabe, encoding: 'UTF-8');
echo '"' . $bereinigt . '"'; // Nur das rechte Ende wurde bereinigt
" 田中太郎"

// Wichtig · Fallstricke

Neu in PHP 8.4: mb_rtrim() wurde zusammen mit mb_ltrim() und mb_trim() in PHP 8.4.0 eingeführt. In älteren PHP-Versionen musste man auf reguläre Ausdrücke mit dem u-Flag (z. B. preg_replace('/\s+$/u', '', $string)) ausweichen.

Im Gegensatz zu rtrim() unterstützt mb_rtrim() keine Zeichenbereiche (wie a..z) in der $characters-Liste. Jedes Zeichen wird als eigenständiges Trimmzeichen behandelt.

Wenn der $encoding-Parameter weggelassen wird und die INI-Einstellung mbstring.internal_encoding nicht korrekt gesetzt ist, kann es zu unerwarteten Ergebnissen kommen. Es empfiehlt sich, die Kodierung immer explizit anzugeben.