Видаліть кінцеву косу рису із струнного PHP


Відповіді:


235

Звичайно, просто перевірте, чи є останній символ косою рисою, а потім обнуліть його.

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

Ще один (напевне, кращий) варіант rtrim()- це використання - цей видаляє всі проміжні косої риси:

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

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

61

При цьому видаляються задні косої риски:

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

13
Зауважте, що це видаляє всі косої коси.
Gumbo

24

Давно прийнятий, проте в своїх споріднених пошуках я натрапив сюди і додаю для "повноти"; rtrim()чудово, але реалізовано так:

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

Це забезпечує портативність з * nix до Windows , оскільки я припускаю, що це питання стосується розгляду шляхів.


1
цікаво! проте на моєму кінці я спіткнувся тут щодо маршрутів , а не стежок
Фелікс Ганьон-Греньє,

1
@ FélixGagnon-Grenier Добре, що відповідь дещо зухвалий і стосується доріжок; У ОП, можливо, були зовсім інші причини. Оскільки "маршрути" зазвичай діють на "стежках" ( певного роду ), зрештою все те саме :-)
Dan Lugg

У випадку, якщо Оп дійсно захоче видалити роздільник кінцевого каталогу із шляху, використовуйте константу DIRECTORY_SEPARATORзамість '/\\'.
Єнс

@Jens Я погоджуюся, однак, оскільки PHP підтримує * nix і Windows, кутові випадки шляхів Windows можуть не бути захищеними.
Ден Лугг

@NorthbornDesign: У вас є приклад? Ви маєте на увазі обрізання * nix шляху в Windows, і навпаки, не лише рідні контури?
Єнс

4

rtrim Використовуйте rtrim, оскільки він поважає, що рядок не закінчується косою косою рисою


2
За винятком того, що він насправді не видаляє кінці косої риски, але відмічає рядок.
user502515

ну я пропустив останню частину запитання ... Я помилився, і я спеціально написав, що він видаляє всі
косої

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.