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.