Signatur
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
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
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
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.';
}
// 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.