Удаление завершающей косой черты из строки PHP


Ответы:


235

Конечно, просто проверьте, является ли последний символ косой чертой, а затем убейте его.

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

Был бы использован другой (возможно, лучший) вариант rtrim()- он удаляет все конечные косые черты:

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

Я также предлагаю использовать DIRECTORY_SEPARATORвместо '/' использования пути к файлам, чтобы он работал на всех платформах.
Брэд

62

Это удаляет завершающие косые черты:

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

13
Обратите внимание, что это удаляет все завершающие косые черты.
Gumbo

24

Давно принимается, однако в моих связанных поисках я наткнулся здесь и добавляю для «полноты»; rtrim()отлично, но реализовано так:

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

Он обеспечивает переносимость с * nix на Windows , поскольку я предполагаю, что этот вопрос относится к работе с путями.


1
интересный! однако, со своей стороны, я наткнулся здесь на маршруты , а не на пути
Феликс Ганьон-Гренье

1
@ FélixGagnon-Grenier Что ж, ответ несколько самонадеянный в отношении путей; у ОП могли быть совершенно другие причины. Поскольку «маршруты» обычно действуют на «пути» ( в некотором роде ), в конце концов, все равно :-)
Дэн Лагг

В случае, если оператор действительно захочет удалить конечный разделитель каталогов из пути, используйте константу DIRECTORY_SEPARATORвместо '/\\'.
Йенс

@Jens Я бы согласился, однако, поскольку PHP поддерживает * nix и пути Windows, угловые случаи могут остаться незамеченными.
Дэн Лагг

@NorthbornDesign: У вас есть пример? Вы имеете в виду обрезку пути * nix в Windows и наоборот, а не только собственные пути?
Йенс

4

rtrim Используйте rtrim, потому что он уважает строку, не заканчивается косой чертой


2
За исключением того, что на самом деле он не удаляет завершающие слэши, а отменяет кавычки в строке.
user502515

ну, я пропустил конечную часть вопроса ... Я сделал ошибку и специально написал, что он удаляет все косые черты
Breezer

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.