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

101

Можно ли удалить косую черту в конце /строки с помощью PHP?

Зак Браун
источник

Ответы:

235

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

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

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

$string = rtrim($string, '/');
ThiefMaster
источник
Я также предлагаю использовать 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