Rimuovi barra finale dalla stringa PHP


101

È possibile rimuovere la barra finale /da una stringa utilizzando PHP?

Risposte:


235

Certo che lo è, controlla semplicemente se l'ultimo carattere è una barra e poi bombardalo.

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

Un'altra opzione (probabilmente migliore) sarebbe usare rtrim(): questa rimuove tutte le barre finali:

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

Suggerirei anche di utilizzare DIRECTORY_SEPARATORinvece di '/' utilizzare i percorsi dei file in modo che funzioni su tutte le piattaforme.
Brad

61

Questo rimuove le barre finali:

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

13
Notare che questo rimuove tutte le barre finali.
Gumbo

24

Accettato a lungo, tuttavia nelle mie ricerche correlate sono inciampato qui e aggiungo per "completezza"; rtrim()è fantastico, tuttavia implementato in questo modo:

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

Assicura la portabilità da * nix a Windows , poiché presumo che questa domanda riguardi i percorsi.


1
interessante! tuttavia da parte mia sono inciampato qui per quanto riguarda le rotte , non i sentieri
Félix Gagnon-Grenier

1
@ FélixGagnon-Grenier Bene, la risposta è un po 'presuntuosa riguardo ai percorsi; il PO potrebbe aver avuto ragioni completamente diverse. Dato che le "rotte" tipicamente agiscono su "sentieri" ( di qualche tipo ) alla fine è tutto uguale :-)
Dan Lugg

Nel caso in cui Op voglia effettivamente rimuovere un separatore di directory finale da un percorso, utilizzare la costante DIRECTORY_SEPARATORinvece di '/\\'.
Jens

@ Jens sarei d'accordo, tuttavia poiché PHP supporta * nix e i casi d'angolo dei percorsi di Windows potrebbero non essere tagliati.
Dan Lugg,

@NorthbornDesign: hai un esempio? Intendi tagliare un percorso * nix su Windows e viceversa, non solo percorsi nativi?
Jens

4

rtrim Usa rtrim perché rispetta che la stringa non finisce con una barra finale


2
Tranne per il fatto che non rimuove realmente le barre finali, ma rimuove le virgolette da una stringa.
user502515

beh, mi sono perso la parte finale della domanda ... ho commesso un errore e ho scritto specificamente che rimuove tutte le barre
Breezer

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.