chop()
Die PHP-Funktion chop() entfernt Leerzeichen oder andere Zeichen vom Ende eines Strings und gibt das Ergebnis zurück.
Die PHP-Funktion chop() entfernt Leerzeichen (oder andere angegebene Zeichen) vom Ende (rechten Seite) eines Strings und gibt das Ergebnis zurück. Sie verändert den Anfang des Strings nicht und ändert niemals die ursprüngliche Variable — sie gibt einen neuen string zurück.
Diese Seite behandelt die Syntax von chop(), welche Zeichen standardmäßig entfernt werden, wie eine benutzerdefinierte Zeichenmaske übergeben wird und welche häufigen Fallstricke zu beachten sind.
chop() ist ein Alias von rtrim()
Das Wichtigste vorab: chop() ist lediglich ein Alias von rtrim(). Die beiden Funktionen verhalten sich identisch — chop ist der ältere Name (bekannt aus Perl), während rtrim ("right trim") der aussagekräftigere ist. Neuer Code bevorzugt in der Regel rtrim(), aber chop() findet sich noch in bestehenden Codebasen.
Zum Entfernen von der linken Seite dient ltrim(); um von beiden Seiten zu kürzen, verwendet man trim().
Syntax
chop(string $string, string $characters = " \n\r\t\v\0"): stringDie Funktion akzeptiert einen oder zwei Parameter:
$string— der zu kürzende string.$characters(optional) — eine Liste von Zeichen, die vom Ende entfernt werden. Wenn weggelassen, entferntchop()die unten aufgeführten Standard-Leerzeichen.
Sie gibt den gekürzten string zurück. Die Eingabe wird per Wert übergeben, daher bleibt $string selbst unverändert.
Standardmäßig entfernte Zeichen
Wird chop() mit einem Argument aufgerufen, entfernt es folgende Zeichen vom Ende:
| Zeichen | Bedeutung |
|---|---|
" " | normales Leerzeichen |
"\t" | Tabulator |
"\n" | Zeilenumbruch (Line Feed) |
"\r" | Wagenrücklauf (Carriage Return) |
"\0" | NUL-Byte |
"\v" | vertikaler Tabulator |
Nachgestellte Leerzeichen entfernen
Die häufigste Anwendung ist das Bereinigen nachgestellter Leerzeichen, Tabulatoren oder Zeilenumbrüche — zum Beispiel nach dem Lesen einer Zeile aus einer Datei:
Wir hängen ein | an, damit die Grenze nach dem Kürzen sichtbar wird. Ausgabe:
Hello, World!|Die nachgestellten Leerzeichen sind verschwunden, während alles davor unverändert bleibt.
Eine Zeichenmaske verwenden
Übergeben Sie ein zweites Argument, um statt Leerzeichen eine benutzerdefinierte Zeichenmenge zu entfernen. Jedes Zeichen in der Maske wird vom Ende entfernt, wiederholt, bis ein Zeichen erreicht wird, das nicht in der Maske enthalten ist:
Ausgabe:
Hello, WorDie Maske "ld!" ist eine Menge von Zeichen, keine Teilzeichenkette. Von rechts gelesen: !, d, l und dann d befinden sich alle in der Menge und werden entfernt; r ist nicht enthalten, daher stoppt das Kürzen dort.
Zeichenbereiche mit ..
Innerhalb der Maske kann ein Bereich mit zwei Punkten angegeben werden. Zum Beispiel bedeutet "0..9" „beliebige Ziffer", sodass dies alle nachgestellten Ziffern entfernt:
<?php
echo chop("order100200", "0..9");
?>Ausgabe:
orderHäufige Fallstricke
- Es werden nur die Enden gekürzt, nicht die Mitte.
chop("a b ")gibt"a b"zurück — die Leerzeichen zwischenaundbbleiben erhalten. - Die Maske ist eine Zeichenmenge, kein wörtliches Suffix.
chop("Hello, World!", "Hd")gibt den string unverändert zurück, da das letzte Zeichen!nicht in der MengeH/denthalten ist und das Kürzen daher nicht beginnt. - Die ursprüngliche Variable wird nicht verändert. Den Rückgabewert immer zuweisen oder verwenden:
$clean = chop($raw);.
Wann es einzusetzen ist
Greifen Sie auf chop() / rtrim() zurück, wenn nachgestellte Zeichen einen Vergleich oder die Anzeige beeinträchtigen würden:
- Entfernen des Zeilenumbruchs am Ende einer mit
fgets()gelesenen Zeile. - Bereinigung von Benutzereingaben vor der Speicherung.
- Entfernen eines abschließenden Schrägstrichs aus einem Pfad oder einer URL:
rtrim($path, "/").
Zum Ersetzen von Zeichen an beliebiger Stelle in einem string (nicht nur an den Enden) verwenden Sie stattdessen str_replace().