PHP - Ruta y archivo

 
Vista:

Ruta y archivo

Publicado por Alvaro (46 intervenciones) el 06/07/2005 12:13:43
Hola, tengo una ruta completa de la que solo me interesa el nombre del archivo y su extension.
Al pasar la variable con la ruta, el IE me coje toda la ruta, pero Mozilla solo me coje el nombre del archivo que es lo que me interesa, pongo un ejemplo:

INTERNET EXPLORER:
$var=c://Carpeta1//Carpeta2//Carpeta3//Archivo.ext

MOZILLA:
$var=Archivo.ext

Conozco la funcion explode() pero no se como utilizarla en este caso para extraer solo el ultimo campo que seria el archivo.

Seguro que alguien me puede ayudar...

MUCHAS GRACIAS

Un saludo

Alvaro.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ruta y archivo

Publicado por Mike79 (669 intervenciones) el 06/07/2005 17:52:48
Utiliza la función split
http://www.php.net/manual/es/function.split.php

$arreglo = split("\\",$var);

Asi de esta manera tienes un arreglo con cada parte del path, y ahora solo toma el ultimo elemento y utilizalo.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ruta y archivo

Publicado por alvaro (46 intervenciones) el 07/07/2005 13:12:12
Hola mike79, teoricamente deberia ser asi, pero me salta con los siguientes errores:

Si mi codigo es este:
$nombre=split("\\",$fuente,10);
El error es este:
Warning: REG_EESCAPE:trailing backslash (\) in.....................

y si mi codigo es este otro:
$nombre=split("\\",$fuente);
Me salta este otro error:
Warning: REG_EESCAPE:ðtrailing backslash (\) in.........................

¿Sabes a que es debido?

Tambien he estado intentando cojer el ultimo registro con:
for($x=0;$x<count($nombre);$x++){$ultimo=$nombre[count-1];}
pero tampoco me da el resultado que yo esperaba...

Muchas gracias por tu tiempo,

Un saludo,

Alvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ruta y archivo

Publicado por Mike79 (669 intervenciones) el 07/07/2005 18:07:53
Mira que interesante. Se necesitan poner 4 barras invertidas: \\\\ en lugar de 2 \\.

¿por que?
Bueno leyendo la documentación de php, dice que la función split utiliza una expresión regular.

¿Que significa?
Bueno es sencillo, en una expresión regular no se puede utilizar la barra invertida \ así nomas, se tiene que usar dos barras invertidas \\ por que la barra invertida tiene un significado especial. Para más información ver la documentación:
http://www.php.net/manual/es/ref.pcre.php

Por lo consiguiente, nosotros en la función split necesitamos utilizar una doble barra invertida es decir: \\ pero como en una cadena no se puede utilizar la barra invertida \ si no que se tiene que utilizar dos barras invertidas \\ entonces tenemos que utilizar cuatro barras invertidas. ¿Enredado? Para nada, es muy facil, el siguiente ejemplo lo demuestra:

$a = "\\\\";
echo $a;

Si ejecutas ese ejemplo, se van a mostrar solo 2 barras invertidas, ya que cada 2 barras invertidas \\ se convierten en una sola.

Como la función split utiliza el motor de expresiones regulares, esas 2 barras invertidas se convierten en una sola, que es lo que queriamos originalmente.

Solución:
Pon 4 barras invertidas en lugar de 2, ó utiliza la función explode, que es identica a la función split, pero que no utiliza el motor de expresiones regulares, por lo tanto aparte que es mas rapido, solo necesitas indicarle 2 barras invertidas en lugar de 4.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ruta y archivo

Publicado por Alvaro (46 intervenciones) el 08/07/2005 13:37:57
Que cosas mas curiosas tiene este lenguaje, jejeje

GRACIAS Miguel Angel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar