Start · Sprachen · PHP · Referenz · mb_ltrim

mb_ltrim

Funktion

Entfernt Leerraum (oder andere Zeichen) am Anfang eines Strings unter Berücksichtigung von Multibyte-Zeichenkodierungen.

seit PHP 8.4.0 Kategorie: string

Signatur

mb_ltrim(string $string, ?string $characters = null): string

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

Typ
string
Beschreibung
Gibt den bereinigten String zurück, bei dem die führenden Zeichen (Whitespace oder die angegebenen Zeichen) entfernt wurden. Der ursprüngliche String wird nicht verändert.

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";
int(12) int(10) Hallo Welt 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;
Willkommen in Tokio!

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;
ltrim(): ' Guten Morgen' mb_ltrim(): 'Guten Morgen'

// 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.