Supprimer la barre oblique de fin de la chaîne PHP

101

Est-il possible de supprimer la barre oblique /de fin d'une chaîne en utilisant PHP?

Zac Brown
la source

Réponses:

235

Bien sûr, vérifiez simplement si le dernier caractère est une barre oblique, puis bombardez celui-ci.

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

Une autre option (probablement meilleure) serait d'utiliser rtrim()- celle-ci supprime toutes les barres obliques de fin:

$string = rtrim($string, '/');
ThiefMaster
la source
Je suggérerais également d'utiliser DIRECTORY_SEPARATORau lieu d' '/' utiliser des chemins de fichiers pour que cela fonctionne sur toutes les plates-formes.
Brad le
61

Cela supprime les barres obliques de fin:

$str = rtrim($str, '/');
Ross
la source
13
Notez que cela supprime toutes les barres obliques de fin.
Gumbo
24

Accepté depuis longtemps, cependant dans mes recherches connexes, je suis tombé ici, et j'ajoute pour "l'exhaustivité"; rtrim()est génial, mais implémenté comme ceci:

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

Cela garantit la portabilité de * nix à Windows , car je suppose que cette question concerne le traitement des chemins.

Dan Lugg
la source
1
intéressant! Cependant, de mon côté, je suis tombé ici sur les itinéraires , pas sur les chemins
Félix Gagnon-Grenier
1
@ FélixGagnon-Grenier Eh bien, la réponse est un peu présomptueuse en ce qui concerne les chemins; le PO peut avoir eu des raisons totalement différentes. Puisque les "routes" agissent généralement sur des "chemins" ( d'une certaine sorte ), c'est tout de même à la fin :-)
Dan Lugg
Dans le cas où l'Op voudrait effectivement supprimer un séparateur de répertoire de fin d'un chemin, utilisez la constante DIRECTORY_SEPARATORau lieu de '/\\'.
Jens le
@Jens Je suis d'accord, mais puisque PHP prend en charge * nix et les chemins d'accès Windows, les cas d'angle peuvent ne pas être limités.
Dan Lugg
@NorthbornDesign: Avez-vous un exemple? Vous voulez dire couper un chemin * nix sous Windows, et vice versa, pas seulement des chemins natifs?
Jens
4

rtrim Utilisez rtrim car il respecte la chaîne ne se termine pas par une barre oblique finale

Breezer
la source
2
Sauf qu'il ne supprime pas vraiment les barres obliques de fin, mais dégage une chaîne.
user502515
Eh bien, j'ai raté la partie de fin de la question ... j'ai fait une erreur et j'ai spécifiquement écrit que cela supprime toutes les barres obliques
Breezer