Foros del Web » Programando para Internet » PHP »

problema con explode

Estas en el tema de problema con explode en el foro de PHP en Foros del Web. Saludos buenas, a ver si podéis ayudarme una vez más.. :P Resulta que obtengo una variable de un bucle en una consulta MySQL, la variable ...
  #1 (permalink)  
Antiguo 09/09/2009, 13:50
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Mensaje problema con explode

Saludos buenas, a ver si podéis ayudarme una vez más.. :P

Resulta que obtengo una variable de un bucle en una consulta MySQL, la variable viene determinada por el siguiente formato:

$variable = \imagenes\fotos\carpeta\usuario\talfoto.jpg";

Este formato , es decir el que esté el slash de esta forma: \ , no lo puedo cambiar ya que no depende de mí..

En cuanto hago un explode:

$sep = explode("\", $variable);

Ya no me lee el código php bien, en cambio si pongo la barra / sí que lo lee bien.., supongo que será por el tema de /n y tal.. ¿ Hay alguna forma de separar cadenas con el slash: \ ?

Graciaas por vuestra ayuda,
Un saludo ;)
  #2 (permalink)  
Antiguo 09/09/2009, 13:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: problema con explode

Te sugiero usar str_replace para cambiar \ por /
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 09/09/2009, 13:56
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con explode

Mira que había pensado algo así...

Mil graciaaaas abimaelrc!!

=D
  #4 (permalink)  
Antiguo 09/09/2009, 14:00
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con explode

O no lo entiendo o no me estoy fijando...

$cadena_cambiada = str_replace("/","\",$cadena);

Sigue sin leerme bien el código en cuanto le meto el maldito: \
  #5 (permalink)  
Antiguo 09/09/2009, 14:03
 
Fecha de Ingreso: diciembre-2008
Ubicación: Valencia
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: problema con explode

Solucionado:

$cadena_ok = str_replace(chr(92),"/",$cadena);

chr(92) es igual a: \ , en código ASCII


Graciaas ;)
  #6 (permalink)  
Antiguo 09/09/2009, 14:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: problema con explode

Es que el simbolo de \ se usa para escapar tienes que usarlo dos veces y ademas estas usando mal la funcion o mejor dicho la estas usando invertida.
Código PHP:
Ver original
  1. $cadena_cambiada = str_replace("\\","/",$cadena);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 09/09/2009, 14:09
Avatar de m_sassa  
Fecha de Ingreso: noviembre-2002
Ubicación: Rio Cuarto - Córdoba - Argentina
Mensajes: 299
Antigüedad: 21 años, 5 meses
Puntos: 0
Respuesta: problema con explode

Mira, esto a mi me funciono:

Código:
	$cadena = '\imagenes\fotos\carpeta\usuario\talfoto.jpg';
	$sep = explode('\\', $cadena);
	
	echo count($sep).'<br>';
	
	foreach ($sep as $key=>$value) {
		echo '-'.$value.'<br>';
	}

/*imprime

6
-
-imagenes
-fotos
-carpeta
-usuario
-talfoto.jpg

*/
En primer lugar debes escapar el \ con un \\.
En segundo lugar debes usar comillas simples para la cadena, sino da la casualidad de que en el ultimo elemento, que seria el \talfoto.jpg toma el \t como una tabulacion.

Espero te sirva.
__________________
"El paisano es la persona que lleva el paisaje en el alma"
Atahualpa Yupanqui
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:01.