W3docs

trim()

Die PHP-Funktion trim() entfernt Leerzeichen oder andere Zeichen vom Anfang und Ende eines Strings. Alle Details in diesem Artikel.

Einführung

Die Funktion trim() in PHP entfernt Leerzeichen (oder andere von Ihnen angegebene Zeichen) von beiden Seiten – Anfang und Ende – eines Strings. Sie gehört zu den am häufigsten verwendeten String-Funktionen, da Text aus Formularen, Dateien und HTTP-Anfragen fast immer mit unerwünschten Leerzeichen, Tabulatoren oder Zeilenumbrüchen behaftet ist.

Dieses Kapitel behandelt die Syntax, die Standardzeichen, die trim() entfernt, die Verwendung eines eigenen Zeichensatzes, den Unterschied zwischen trim(), ltrim() und rtrim() sowie die häufigsten Fehler, die es zu vermeiden gilt.

Syntax

trim(string $string, string $characters = " \n\r\t\v\x00"): string
ParameterBeschreibung
$stringDer zu kürzende Eingabe-String.
$charactersOptional. Der zu entfernende Zeichensatz. Wird er weggelassen, wird der Standard-Leerraumzeichensatz verwendet.

Die Funktion gibt einen neuen, gekürzten String zurück — sie verändert den ursprünglichen $string nicht (Strings werden in PHP per Wert übergeben).

Standardmäßig entfernt trim() folgende Zeichen von beiden Enden:

ZeichenBedeutung
" "Ein gewöhnliches Leerzeichen
"\t"Ein Tabulator
"\n"Ein Zeilenvorschub (neue Zeile)
"\r"Ein Wagenrücklauf
"\0"Das NUL-Byte
"\x0B" (\v)Ein vertikaler Tabulator

Einfaches Beispiel

Führende und abschließende Leerzeichen aus einem String entfernen:

php— editable, runs on the server

Die eckigen Klammern werden nur ausgegeben, um das Ergebnis sichtbar zu machen – sie beweisen, dass die Leerzeichen auf beiden Seiten entfernt wurden, während das innere Leerzeichen (Hello, world!) erhalten bleibt.

Benutzerdefinierte Zeichen entfernen

Das zweite Argument ermöglicht es, genau festzulegen, welche Zeichen entfernt werden sollen. Dies ist praktisch beim Bereinigen von Trennzeichen, Schrägstrichen oder Anführungszeichen:

<?php

echo trim("xxxHello worldxxx", "x"), "\n"; // Hello world
echo trim("/var/www/html/", "/"), "\n";    // var/www/html
echo trim("###Section###", "#"), "\n";     // Section

Sie können mehrere Zeichen auf einmal übergeben – trim() entfernt beliebige davon von jedem Ende, bis es auf ein Zeichen trifft, das nicht im Satz enthalten ist:

<?php

echo trim("**[Note]**", "*[]"); // Note

Beachten Sie, dass nur die Enden betroffen sind: Die Klammern innerhalb des Strings bleiben unberührt, genau wie das innere Leerzeichen im ersten Beispiel.

Zeichenbereiche mit ".."

Im Argument $characters können Sie mit zwei Punkten einen Bereich angeben. Zum Beispiel, um ASCII-Steuerzeichen zu entfernen:

<?php

$dirty = "\x01\x02Hello\x03";
echo trim($dirty, "\x00..\x1F"); // Hello

trim() vs ltrim() vs rtrim()

trim() wirkt auf beide Enden. Wenn Sie nur eine Seite bearbeiten möchten, verwenden Sie die verwandten Funktionen:

FunktionKürzt von
trim()beiden Enden
ltrim()der linken Seite (Anfang)
rtrim()der rechten Seite (Ende)
<?php

$value = "...data...";

echo trim($value, "."),  "\n";  // data
echo ltrim($value, "."), "\n";  // data...
echo rtrim($value, "."), "\n";  // ...data

Häufiger Anwendungsfall: Benutzereingaben bereinigen

trim() ist besonders wertvoll bei der Validierung von Formulareingaben. Ein Benutzer könnte nach seiner E-Mail-Adresse ein Leerzeichen eingeben oder ein Feld mit nur Leerzeichen leer lassen. Durch vorheriges Trimmen werden solche Prüfungen zuverlässig:

<?php

$username = "  alice  ";
$username = trim($username);

if ($username === "") {
    echo "Username is required.";
} else {
    echo "Welcome, " . $username . "!"; // Welcome, alice!
}

Ohne den trim()-Aufruf würde ein Wert wie " " (nur Leerzeichen) eine if (!empty($username))-Prüfung bestehen, obwohl er faktisch leer ist.

Häufige Fehler

  • Es wird ein Wert zurückgegeben, keine Mutation. trim($string); allein hat keinen nützlichen Effekt – Sie müssen das Ergebnis zuweisen: $string = trim($string);.
  • Der benutzerdefinierte Satz ist eine Liste, kein Teilstring. trim("Hello", "Helo") entfernt jedes führende/abschließende Zeichen, das in "Helo" vorkommt, nicht das wörtliche Wort – das kann mehr entfernen als erwartet.
  • Mehrbyte-Zeichen. trim() arbeitet auf Bytes, nicht auf Unicode-Codepunkten. Um mehrbyte-Leerzeichen zu entfernen, verwenden Sie einen benutzerdefinierten Satz oder einen regulären Ausdruck.
  • Es betrifft nur die Enden. Um Zeichen überall zu entfernen, verwenden Sie stattdessen str_replace() oder preg_replace().

Fazit

Die Funktion trim() ist das bevorzugte Werkzeug zum Bereinigen der Ränder eines Strings – standardmäßig Leerzeichen oder jeder von Ihnen angegebene Zeichensatz. In Kombination mit den einseitigen Verwandten ltrim() und rtrim() macht sie Eingabevalidierung und String-Normalisierung einfach und vorhersehbar.

Um mehr über die String-Verarbeitung in PHP zu erfahren, lesen Sie PHP Strings, str_replace(), explode() und str_pad().

Übungen

Übung
Was macht die PHP-Funktion trim()?
Was macht die PHP-Funktion trim()?
Was this page helpful?