2010-11-30 17 views

Respuesta

180

Claro que sí, simplemente comprueba si el último carácter es una barra inclinada y luego haz una nuke sobre esa.

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

Otra opción (probablemente mejor) estaría utilizando rtrim() - éste elimina todos barras al final:

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

+1 Para eliminar solo * una * barra inclinada según lo solicitado. – Gumbo

4

rtrim Uso rtrim hacer que se respete la cadena doesnt terminar con una barra final

+2

Excepto que realmente no elimina las barras inclinadas, pero anula una cadena. – user502515

+0

Bueno, me perdí la parte final en la pregunta ... Cometí un error y específicamente escribí que elimina todas las barras – Breezer

47

Esto elimina barras al final:

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

Tenga en cuenta que esto elimina * todas * barras diagonales. – Gumbo

22

aceptado desde hace tiempo, sin embargo, en mis búsquedas relacionadas me encontré aquí, y estoy añadiendo de "integridad"; rtrim() es grande, sin embargo implementarse como esto:

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

Se asegura la portabilidad de * nix a de Windows, como supongo esta pregunta se refiere a tratar con las rutas.

+0

¡muy interesante! Sin embargo, en mi extremo me encontré con * rutas *, no caminos –

+1

@ FélixGagnon-Grenier Bueno, la respuesta es un poco presuntuosa con respecto a los caminos; el OP puede haber tenido razones completamente diferentes. Como las "rutas" normalmente actúan sobre "rutas" (* de algún tipo *), al final todo es lo mismo :-) – Dan

+0

En caso de que el operador desee eliminar un separador de directorio final de una ruta, use la constante [' DIRECTORY_SEPARATOR'] (http://php.net/manual/en/dir.constants.php) en lugar de ''/ \\''. – Jens

Cuestiones relacionadas