Start · Sprachen · PHP · Referenz · mb_trim

mb_trim

Funktion

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

seit PHP 8.4.0 Kategorie: string

Signatur

mb_trim(string $string, string $characters = " \f\n\r\t\v\x00\u{00A0}\u{1680}\u{2000}-\u{200A}\u{2028}\u{2029}\u{202F}\u{205F}\u{3000}\u{FEFF}"): string

Beschreibung

mb_trim() funktioniert ähnlich wie trim(), ist jedoch für Multibyte-Zeichenkodierungen (z. B. UTF-8) ausgelegt. Während trim() nur ASCII-Leerzeichen korrekt behandelt, erkennt und entfernt mb_trim() auch Unicode-Leerzeichen wie das geschützte Leerzeichen (\u{00A0}), ideografische Leerzeichen (\u{3000}) und andere Unicode-Whitespace-Zeichen gemäß dem Unicode-Standard.

Die Funktion entfernt standardmäßig alle gängigen ASCII- und Unicode-Leerraumzeichen vom Anfang und Ende des übergebenen Strings. Über den optionalen Parameter $characters kann eine eigene Liste von zu entfernenden Zeichen angegeben werden – diese wird als Zeichenkette (nicht als Zeichenklasse) übergeben, wobei jedes Zeichen einzeln behandelt wird.

Besonders nützlich ist mb_trim() bei der Verarbeitung von Benutzereingaben, die aus verschiedenen Quellen stammen und möglicherweise exotische Unicode-Whitespace-Zeichen enthalten, die von trim() nicht erfasst würden. Dies betrifft häufig kopierte Texte aus Textverarbeitungsprogrammen oder Webinhalten.

Parameter

Name Typ Default Beschreibung
$string Pflicht string Der zu bearbeitende Eingabe-String, dessen führende und abschließende Zeichen entfernt werden sollen.
$characters string " \f\n\r\t\v\x00\u{00A0}\u{1680}...\u{FEFF}" Optionale Zeichenkette mit den zu entfernenden Zeichen. Jedes Zeichen im String wird einzeln als zu entfernendes Zeichen interpretiert. Unterstützt Multibyte-Zeichen. Wird dieser Parameter weggelassen, werden alle gängigen ASCII- und Unicode-Whitespace-Zeichen entfernt.

Rückgabewert

Typ
string
Beschreibung
Gibt den bereinigten String zurück, bei dem alle angegebenen Zeichen am Anfang und am Ende entfernt wurden. Enthält der String nach dem Entfernen keine Zeichen mehr, wird ein leerer String zurückgegeben.

Beispiele

Entfernen von Unicode-Leerzeichen, die trim() nicht erkennt

<?php
// Geschütztes Leerzeichen (U+00A0) und ideografisches Leerzeichen (U+3000)
$string = "\u{00A0}\u{3000} Hallo Welt \u{00A0}\u{3000}";

$mitTrim   = trim($string);
$mitMbTrim = mb_trim($string);

echo 'trim():    |' . $mitTrim   . '|' . PHP_EOL;
echo 'mb_trim(): |' . $mitMbTrim . '|' . PHP_EOL;

// trim() entfernt die Unicode-Leerzeichen NICHT vollständig
// mb_trim() entfernt sie korrekt
trim(): |   Hallo Welt   | mb_trim(): |Hallo Welt|

Benutzerdefinierte Zeichen entfernen (Multibyte)

<?php
// Entfernt bestimmte Sonderzeichen und das Euro-Zeichen am Rand
$preis = '€€ 19,99 €€';
$bereinigt = mb_trim($preis, '€ ');
echo $bereinigt; // 19,99
19,99

Verarbeitung von Formulareingaben mit gemischten Leerzeichen

<?php
// Simuliert eine Benutzereingabe mit verschiedenen Whitespace-Zeichen
$eingabe = "\u{2003}\u{00A0}  Max Mustermann  \u{00A0}\u{2003}";

$bereinigt = mb_trim($eingabe);

if (mb_strlen($bereinigt) > 0) {
    echo 'Name: ' . htmlspecialchars($bereinigt, ENT_QUOTES, 'UTF-8');
} else {
    echo 'Kein Name angegeben.';
}
Name: Max Mustermann

// Wichtig · Fallstricke

Neu in PHP 8.4: mb_trim() wurde mit PHP 8.4.0 eingeführt. In älteren PHP-Versionen muss man auf preg_replace() mit einem Unicode-Regex-Muster ausweichen, z. B.: preg_replace('/^[\\s\\p{Z}]+|[\\s\\p{Z}]+$/u', '', $string).

Im Gegensatz zu trim() interpretiert mb_trim() den $characters-Parameter nicht als Zeichenbereich mit ..-Notation. Jedes Zeichen wird einzeln betrachtet.

Analog zu mb_trim() existieren auch mb_ltrim() (nur Anfang) und mb_rtrim() (nur Ende) für einseitiges Trimmen.