Eliminar barra diagonal de cadena PHP


101

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

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, '/');

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, '/');

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.


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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.