Funktion ltrim() - Zeichen links vom String löschen

Bei der Verarbeitung von Strings kann es passieren, dass auf der linken Seite des Strings unerwünschte Zeichen wie z.B. Leerzeichen oder andere whitespaces enthalten sind. Diese können beispielsweise durch fehlerhafte Tastatureingaben oder durch das Trennen eines längeren Strings entstehen. Solche unerwünschten Zeichen müssen in PHP-Anwendungen häufig entfernt werden. Mit der Funktion trim() werden Zeichen links und rechts vom String entfernt. Mit rtrim() werden die Zeichen auf der rechten Seite des Strings entfernt. Analog dazu gibt es ltrim(), um die Zeichen links vom String zu löschen. Folgende Parameter werden dabei angegeben.

  1. Die Zeichenkette, von der die Zeichen auf der linken Seite entfernt werden sollen (string).
  2. Die zu entfernenden Zeichen, falls sie auf der linken Seite des Strings vorkommen (character_mask, optional).

Der zweite Parameter character_mask ist optional und kann entfallen. Bei einer Nichtangabe werden die folgenden Zeichen links vom String gelöscht (entspricht dem Wert " \t\n\r\0\x0B").

  • Leerzeichen
  • Tabulatoren \t
  • Zeilenvorschübe \n
  • Wagenrückläufe \r
  • Null-Bytes \0
  • Vertikale Tabulatoren \x0B

Im folgenden Beispielcode wird der String einmal ohne die Anwendung von ltrim() und einmal mit ausgegeben. Die Auswirkung kann man im Quelltext der Website nachvollziehen.

<?php

$str = "\t \n \r \0 \x0B Zeichenkette";

// Ausgabe der whitespaces ohne ltrim()
echo $str;

// Entfernen der whitespaces mit ltrim()
echo ltrim($str);

?>

Beim Löschen kommt es darauf an, dass die whitespaces oder andere zu löschende Zeichen sich am Anfang des Strings befinden. Beim folgenden Code enthält der String zu Beginn das Zeichen A. Das Zeichen wird unter character_mask nicht angegeben, sodass links vom String keine Zeichen gelöscht werden, auch wenn die nächsten Zeichen whitespaces sind.

<?php

$str = "A \t \n \r \0 \x0B Zeichenkette";

// Ausgabe A \t \n \r \0 \x0B Zeichenkette
echo ltrim($str);

?>

Die zu löschenden Zeichen kann man über den zweiten Parameter selbst vorgeben. Im nächsten Beispielcode wird festgelegt, dass die Zeichen ABC gelöscht werden sollen.

<?php

$str = 'ABCZeichenkette';

// Ausgabe Zeichenkette
echo ltrim($str, 'ABC');

?>

Da die Funktion ltrim() case-sensitive ist, kommt es auf die Groß- und Kleinschreibung an.

<?php

$str = 'ABCZeichenkette';

// Ausgabe ABCZeichenkette
echo ltrim($str, 'abc');

?>

Falls bei der Angabe des zweiten Parameters whitespaces angegeben werden, müssen diese in doppelten Anführungszeichen sein, da sie ansonsten nicht als whitespaces sondern als Text betrachtet werden.

<?php

$str = "\t\nZeichenkette";

// Ausgabe Zeichenkette
echo ltrim($str, "\t\n");

?>

Mit drei Punkten ... kann ein Bereich angegeben werden, bis zu der alle Zeichen entfernt werden sollen. Wenn man z.B. ...Z angibt, dann werden beginnend vom Byte 0 alle Zeichen bis zum Zeichen Z entfernt.

<?php

$str = "ABCZeichenkette";

// Ausgabe eichenkette
echo ltrim($str, "...Z");

?>

Man kann mit zwei Punkte auch einen Bereich von .. bis angeben und die zu entfernenden Zeichen eingrenzen. Dann werden nicht alle Zeichen ab dem Byte 0 entfernt. Im folgenden Beispiel werden A bis C entfernt.

<?php

$str = "ABCZeichenkette";

// Ausgabe Zeichenkette
echo ltrim($str, "A..C");

?>

Man kann die zu löschenden Zeichen auch über den hexadezimalen Wert angeben.

<?php

$str = "ABCZeichenkette";

// Ausgabe Zeichenkette
echo ltrim($str, "\x41..\x43");

?>

Die Funktion ltrim() funktioniert zwar auch mit der Zeichenkodierung UTF-8. In manchen Fällen kann es jedoch sein, dass die zu einem Zeichen gehörenden Bytes zum Teil abgeschnitten werden, sodass die Zeichen nicht richtig dargestellt werden.