Entfernen Sie den abschließenden Schrägstrich aus String PHP

100

Ist es möglich, den abschließenden Schrägstrich /mit PHP aus einem String zu entfernen ?

Zac Brown
quelle

Antworten:

235

Sicher ist es, überprüfen Sie einfach, ob das letzte Zeichen ein Schrägstrich ist, und zerstören Sie dann dieses.

if(substr($string, -1) == '/') {
    $string = substr($string, 0, -1);
}

Eine andere (wahrscheinlich bessere) Option wäre die Verwendung rtrim()- diese entfernt alle nachgestellten Schrägstriche:

$string = rtrim($string, '/');
DiebMaster
quelle
Ich würde auch vorschlagen, DIRECTORY_SEPARATORstatt '/' Dateipfade zu verwenden, damit es auf allen Plattformen funktioniert.
Brad
61

Dadurch werden nachgestellte Schrägstriche entfernt:

$str = rtrim($str, '/');
Ross
quelle
13
Beachten Sie, dass dadurch alle nachgestellten Schrägstriche entfernt werden.
Gumbo
24

Lange akzeptiert, aber in meinen verwandten Suchen bin ich hier gestolpert und füge der "Vollständigkeit" hinzu; rtrim()ist toll, aber so implementiert:

$string = rtrim($string, '/\\'); //strip both forward and back slashes

Es stellt die Portabilität von * nix nach Windows sicher , da ich davon ausgehe, dass diese Frage den Umgang mit Pfaden betrifft.

Dan Lugg
quelle
1
interessant! Am Ende stolperte ich jedoch über Routen , nicht über Pfade
Félix Gagnon-Grenier
1
@ FélixGagnon-Grenier Nun, die Antwort ist etwas anmaßend in Bezug auf Pfade; Das OP kann ganz andere Gründe gehabt haben. Da "Routen" normalerweise auf "Pfaden" ( irgendeiner Art ) wirken, ist es am Ende alle gleich :-)
Dan Lugg
Wenn der Op tatsächlich ein nachfolgendes Verzeichnis-Trennzeichen aus einem Pfad entfernen möchte, verwenden Sie DIRECTORY_SEPARATORstattdessen die Konstante '/\\'.
Jens
@Jens Ich würde jedoch zustimmen, da PHP * nix unterstützt und Windows-Pfade Eckfälle möglicherweise nicht gekürzt werden.
Dan Lugg
@NorthbornDesign: Hast du ein Beispiel? Sie meinen, einen * nix-Pfad unter Windows zu kürzen und umgekehrt, nicht nur native Pfade?
Jens
4

rtrim Verwenden Sie rtrim, da die Zeichenfolge nicht mit einem abschließenden Schrägstrich endet

Breezer
quelle
2
Abgesehen davon, dass nachfolgende Schrägstriche nicht wirklich entfernt werden, sondern die Anführungszeichen einer Zeichenfolge aufgehoben werden.
user502515
Nun, ich habe den nachfolgenden Teil in der Frage verpasst ... Ich habe einen Fehler gemacht und speziell geschrieben, dass er alle Schrägstriche entfernt
Breezer