Usuń końcowy ukośnik z ciągu PHP


101

Czy można usunąć końcowy ukośnik /z ciągu znaków za pomocą PHP?

Odpowiedzi:


235

Jasne, po prostu sprawdź, czy ostatni znak jest ukośnikiem, a następnie nuke to.

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

Inną (prawdopodobnie lepszą) opcją byłoby użycie rtrim()- ta usuwa wszystkie końcowe ukośniki:

$string = rtrim($string, '/');

Sugerowałbym również używanie DIRECTORY_SEPARATORzamiast '/' ścieżek plików, aby działało na wszystkich platformach.
Brad

61

To usuwa końcowe ukośniki:

$str = rtrim($str, '/');

13
Zauważ, że usuwa to wszystkie końcowe ukośniki.
Gumbo

24

Od dawna akceptowałem, jednak w moich powiązanych poszukiwaniach natknąłem się tutaj i dodaję dla „kompletności”; rtrim()jest świetny, jednak zaimplementowany w ten sposób:

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

Zapewnia przenośność z * nix do Windows , ponieważ zakładam, że to pytanie dotyczy radzenia sobie ze ścieżkami.


1
ciekawy! jednak na końcu natknąłem się tutaj na trasy , a nie ścieżki
Félix Gagnon-Grenier

1
@ FélixGagnon-Grenier Cóż, odpowiedź jest nieco arogancka, jeśli chodzi o troskę o ścieżki; PO mógł mieć zupełnie inne powody. Ponieważ „trasy” zazwyczaj działają na „ścieżkach” ( w pewnym sensie ), koniec końców wszystko jest takie samo :-)
Dan Lugg,

W przypadku, gdy operator rzeczywiście chciałby usunąć końcowy separator katalogu ze ścieżki, użyj stałej DIRECTORY_SEPARATORzamiast '/\\'.
Jens

@Jens Zgodziłbym się, jednak skoro PHP obsługuje ścieżki * nix i Windows, przypadki narożników mogą pozostać nieobcięte.
Dan Lugg

@NorthbornDesign: Czy masz przykład? Masz na myśli przycinanie ścieżki * nix w systemie Windows i odwrotnie, a nie tylko ścieżki natywne?
Jens,

4

rtrim Używa rtrim, ponieważ szanuje łańcuch nie kończy się końcowym ukośnikiem


2
Tyle że tak naprawdę nie usuwa końcowych ukośników, ale usuwa cudzysłowy z ciągu.
user502515

cóż, przegapiłem końcową część w pytaniu ... popełniłem błąd i konkretnie napisałem, że usuwa wszystkie ukośniki
Breezer

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.