Funktion rtrim() - Zeichen rechts vom String löschen
Zeichenketten enthalten auf der linken oder rechten Seite häufig unerwünschte Leerzeichen oder andere whitespaces wie Zeilenumbrüche oder Tabulatorzeichen. Sie können beispielsweise durch Kopieren und Einfügen oder durch fehlerhafte Tastatureingaben entstehen. In PHP-Anwendungen müssen diese in der Regel entfernt werden. Falls man Zeichen rechts und links vom String löschen möchte, kann man die Funktion trim() verwenden. Es kann auch der Fall eintreten, dass man nur die Zeichen rechts vom String löschen möchte. Hierfür gibt es die Funktion rtrim(). Die Parameter werden wie folgt angegeben.
- Die Zeichenkette, von der die Zeichen auf der rechten Seite entfernt werden sollen (string).
- Die zu entfernenden Zeichen, falls sie auf der rechten Seite des Strings vorkommen (character_mask, optional).
Der zweite Parameter ist optional und kann beim Funktionsaufruf entfallen. In dem Fall werden die folgenden Zeichen rechts vom String entfernt (entspricht dem Wert " \t\n\r\0\x0B"
für character_mask).
- Leerzeichen
- Tabulatoren
\t
- Zeilenvorschübe
\n
- Wagenrückläufe
\r
- Null-Bytes
\0
- Vertikale Tabulatoren
\x0B
Zur besseren Nachvollziehbarkeit wird im folgenden Beispiel der String einmal ohne und einmal mit der Funktion rtrim()
ausgegeben. Der Effekt ist im Quelltext der Website sichtbar.
<?php
$str = "Zeichenkette \t \n \r \0 \x0B";
// Ausgabe der whitespaces ohne rtrim()
echo $str;
// Entfernen der whitespaces mit rtrim()
echo rtrim($str);
?>
Entscheidend ist, dass die im zweiten Parameter als character_mask
festgelegten Zeichen sich am Ende der Zeichenkette befinden. Beim folgenden Beispiel enthält der String am Ende das Zeichen A
. Da das Zeichen nicht unter character_mask
angegeben wurde bzw. standardmäßig nicht darin enthalten ist, werden auch die übrigen whitespaces nicht entfernt.
<?php
$str = "Zeichenkette \t \n \r \0 \x0B A";
// Ausgabe Zeichenkette \t \n \r \0 \x0B A
echo rtrim($str);
?>
Über den zweiten Parameter können die zu entfernenden Zeichen auch selbst vorgegeben werden. Im folgenden Beispielcode wird für character_mask
der Wert ABC
festgelegt. Der String wird ohne diese Zeichen ausgegeben.
<?php
$str = 'ZeichenketteABC';
// Ausgabe Zeichenkette
echo rtrim($str, 'ABC');
?>
Die Verarbeitung erfolgt case-sensitive, sodass zwischen Groß- und Kleinbuchstaben unterschieden wird.
<?php
$str = 'ZeichenketteABC';
// Ausgabe ZeichenketteABC
echo rtrim($str, 'abc');
?>
Bei der Angabe von whitespaces als character_mask
müssen diese in doppelten Anführungszeichen gesetzt werden, da sie bei einfachen Anführungszeichen als Text interpretiert werden und nicht als whitespaces.
<?php
$str = "Zeichenkette\t\n";
// Ausgabe Zeichenkette
echo rtrim($str, "\t\n");
?>
Mit ... kann man auch einen Bereich der zu entfernenden Zeichen angeben. Falls beispielsweise ...Z
angegeben wird, werden auf der rechten Seite des Strings alle Zeichen ab dem Byte 0 des ASCII-Zeichensatzes bis zum Buchstaben Z entfernt.
<?php
$str = "ZeichenketteABC";
// Ausgabe Zeichenkette
echo rtrim($str, "...Z");
?>
Mit zwei Punkten kann der Bereich von .. bis eingegrenzt werden, sodass nicht alle Zeichen ab dem Byte 0 entfernt werden. Beim folgenden Beispiel werden alle Zeichen von D bis G entfernt.
<?php
$str = "ZeichenketteABCDEFG";
// Ausgabe ZeichenketteABC
echo rtrim($str, "D..G");
?>
Der Parameter kann auch über den hexadezimalen ASCII-Wert angegeben werden.
<?php
$str = "ZeichenketteABCDEFG";
// Ausgabe ZeichenketteABC
echo rtrim($str, "\x44..\x47");
?>
Mit der Zeichenkodierung UTF-8 funktioniert rtrim()
ebenfalls. Es kann jedoch vorkommen, dass die Bytes eines Zeichens teilweise abgeschnitten werden und die Zeichen daher nicht richtig dargestellt werden.