Eliminar barra diagonal de cadena PHP

101

¿Es posible eliminar la barra inclinada final /de una cadena usando PHP?

Zac Brown
fuente

Respuestas:

235

Claro que lo es, simplemente verifica si el último carácter es una barra y luego bombardea ese.

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

Otra opción (probablemente mejor) sería usar rtrim(), esta elimina todas las barras inclinadas:

$string = rtrim($string, '/');
ThiefMaster
fuente
También sugiero usar en DIRECTORY_SEPARATORlugar de '/' usar rutas de archivo para que funcione en todas las plataformas.
Brad
61

Esto elimina las barras diagonales finales:

$str = rtrim($str, '/');
Ross
fuente
13
Tenga en cuenta que esto elimina todas las barras inclinadas.
Gumbo
24

Acepté durante mucho tiempo, sin embargo, en mis búsquedas relacionadas tropecé aquí, y estoy agregando "integridad"; rtrim()es genial, sin embargo implementado así:

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

Garantiza la portabilidad de * nix a Windows , ya que supongo que esta pregunta se refiere a tratar con rutas.

Dan Lugg
fuente
1
¡interesante! sin embargo, por mi parte, tropecé aquí con respecto a las rutas , no a los caminos
Félix Gagnon-Grenier
1
@ FélixGagnon-Grenier Bueno, la respuesta es algo presuntuosa con la preocupación por los caminos; el PO puede haber tenido razones completamente diferentes. Dado que las "rutas" suelen actuar en "rutas" ( de algún tipo ), al final todo es igual :-)
Dan Lugg
En caso de que el Op quiera eliminar un separador de directorio final de una ruta, use la constante en DIRECTORY_SEPARATORlugar de '/\\'.
Jens
@Jens Estoy de acuerdo, sin embargo, dado que PHP admite * nix y las esquinas de las rutas de Windows, es posible que no se recorten.
Dan Lugg
@NorthbornDesign: ¿Tiene un ejemplo? ¿Te refieres a recortar una ruta * nix en Windows y viceversa, no solo rutas nativas?
Jens
4

rtrim Use rtrim porque respeta que la cadena no termina con una barra diagonal

Breezer
fuente
2
Excepto que en realidad no elimina las barras inclinadas, sino que quita las comillas de una cadena.
user502515
bueno, me perdí la parte final de la pregunta ... Cometí un error y escribí específicamente que elimina todas las barras
Breezer