Signatur
Beschreibung
mb_ltrim() funktioniert wie die eingebaute Funktion ltrim(), ist jedoch vollständig multibyte-sicher. Sie entfernt führende Zeichen (standardmäßig Whitespace) vom Beginn eines Strings und berücksichtigt dabei korrekt mehrbyte-kodierte Zeichen, wie sie in UTF-8, UTF-16 oder anderen Multibyte-Zeichensätzen vorkommen.
Ohne den zweiten Parameter werden alle gängigen Unicode-Whitespace-Zeichen entfernt, darunter das normale Leerzeichen (U+0020), Tabulatoren, Zeilenumbrüche sowie weitere Unicode-Whitespace-Codepoints wie das geschützte Leerzeichen (U+00A0) oder das ideografische Leerzeichen (U+3000). Dies ist ein wichtiger Unterschied zu ltrim(), das nur ASCII-Whitespace berücksichtigt.
Mit dem optionalen Parameter $characters kann eine Zeichenliste angegeben werden, die ebenfalls als Multibyte-String interpretiert wird. Alle darin enthaltenen Zeichen werden am Anfang des Strings entfernt — auch dann, wenn es sich um mehrbyte-kodierte Zeichen handelt.
Diese Funktion ist besonders nützlich bei der Verarbeitung von Benutzereingaben, internationalen Texten oder Daten aus Quellen, die Unicode-Whitespace enthalten können, der von ltrim() nicht erkannt und entfernt würde.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu bearbeitende Eingabe-String, der am Anfang bereinigt werden soll. | |
| $characters | ?string | null | Optionale Zeichenliste als Multibyte-String. Alle enthaltenen Zeichen werden am Anfang des Strings entfernt. Wird null übergeben oder der Parameter weggelassen, werden Unicode-Whitespace-Zeichen entfernt. |
Rückgabewert
Beispiele
Führenden Unicode-Whitespace entfernen
<?php
// Normales ltrim() erkennt das geschützte Leerzeichen (U+00A0) nicht
$text = "\xc2\xa0\xc2\xa0 Hallo Welt ";
$mit_ltrim = ltrim($text);
$mit_mb_ltrim = mb_ltrim($text);
var_dump(strlen($mit_ltrim)); // Geschützter Leerraum bleibt erhalten
var_dump(strlen($mit_mb_ltrim)); // Geschützter Leerraum wurde korrekt entfernt
echo mb_ltrim($text) . "END";
Bestimmte Multibyte-Zeichen am Anfang entfernen
<?php
// Entfernt japanische Satzzeichen und ideografischen Leerraum am Anfang
$text = " 「」Willkommen in Tokio!";
$bereinigt = mb_ltrim($text, " 「」");
echo $bereinigt;
Vergleich mit ltrim() bei UTF-8-String
<?php
// UTF-8-kodierter String mit ideografischem Leerzeichen am Anfang (U+3000)
$input = "\xe3\x80\x80Guten Morgen";
echo "ltrim(): '" . ltrim($input) . "'" . PHP_EOL;
echo "mb_ltrim(): '" . mb_ltrim($input) . "'" . PHP_EOL;
// Wichtig · Fallstricke
Neu in PHP 8.4: mb_ltrim() wurde erst mit PHP 8.4.0 eingeführt. Für ältere PHP-Versionen existiert keine direkte Entsprechung in der Standardbibliothek; dort muss auf reguläre Ausdrücke mit preg_replace() und dem Unicode-Modifier (/u) zurückgegriffen werden, z. B. preg_replace('/^\s+/u', '', $string).
Im Unterschied zu ltrim() verwendet mb_ltrim() ohne $characters-Argument eine umfassendere Definition von Whitespace, die den Unicode-Standard berücksichtigt. Das kann zu unterschiedlichen Ergebnissen führen, wenn ein String Unicode-Whitespace wie U+00A0 (geschütztes Leerzeichen) oder U+3000 (ideografisches Leerzeichen) enthält.
Die Funktion verwendet intern die aktuelle mb_internal_encoding()-Einstellung nicht als Steuergröße — sie arbeitet stets mit der Kodierung des übergebenen Strings, wobei UTF-8 die empfohlene und typische Kodierung ist.