Remover barra final de string PHP


101

É possível remover a barra final /de uma string usando PHP?

Respostas:


235

Claro que é, simplesmente verifique se o último caractere é uma barra e então detone aquele.

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

Outra opção (provavelmente melhor) seria usar rtrim()- esta remove todas as barras finais:

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

Eu também sugiro usar em DIRECTORY_SEPARATORvez de '/' se usar caminhos de arquivo para que funcione em todas as plataformas.
Brad

61

Isso remove as barras finais:

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

13
Observe que isso remove todas as barras finais.
Gumbo

24

Aceito há muito tempo, porém, em minhas pesquisas relacionadas, tropecei aqui e estou adicionando para "completude"; rtrim()é ótimo, porém implementado assim:

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

Ele garante a portabilidade de * nix para o Windows , pois presumo que essa questão se refira ao tratamento de caminhos.


1
interessante! no entanto, do meu lado tropecei aqui em relação a rotas , não caminhos
Félix Gagnon-Grenier

1
@ FélixGagnon-Grenier Bem, a resposta é um tanto presunçosa com relação aos caminhos; o OP pode ter tido razões totalmente diferentes. Como as "rotas" normalmente atuam em "caminhos" ( de algum tipo ), é tudo igual no final :-)
Dan Lugg

No caso do Op realmente querer remover um separador de diretório final de um caminho, use a constante em DIRECTORY_SEPARATORvez de '/\\'.
Jens

@Jens, eu concordo, entretanto, como o PHP suporta * nix e caminhos do Windows, alguns casos podem ficar sem corte.
Dan Lugg

@NorthbornDesign: Você tem um exemplo? Você quer dizer cortar um caminho * nix no Windows e vice-versa, não apenas caminhos nativos?
Jens

4

rtrim Use rtrim porque ele respeita a string não termina com uma barra final


2
Exceto que isso não remove realmente as barras finais, mas remove as aspas de uma string.
user502515

bem, eu perdi a parte final da pergunta ... Eu cometi um erro e escrevi especificamente que ele remove todas as barras
Breezer

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.