Foros del Web » Programando para Internet » PHP »

Problema saltos de linea con file()

Estas en el tema de Problema saltos de linea con file() en el foro de PHP en Foros del Web. Muy buenas, Estoy haciendo un script para parsear un .csv y pasarlo a MySQL pero tengo un problema que no se como solucionar: El formato ...
  #1 (permalink)  
Antiguo 09/03/2007, 05:35
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (España)
Mensajes: 134
Antigüedad: 19 años, 3 meses
Puntos: 0
Problema saltos de linea con file()

Muy buenas,

Estoy haciendo un script para parsear un .csv y pasarlo a MySQL pero tengo un problema que no se como solucionar:

El formato es así:

"Campo1";"Campo2";"Campo3"
"valor1";"valor2";"valor3"
"valor11";"valor22";"valor33"
etc etc

Lo que hago es con la funcion file() un array con todas las filas, y luego trato cada fila con un explode() y me funciona bien.

El problema es que a veces hay en el valor del campo un salto de linea y entonces me peta todo. Por ejemplo:

"valor11";"valor22
";"valor33"

Entonces me detecta 2 lineas y se desmonta todo. Alguien sabría como solucionarlo???
  #2 (permalink)  
Antiguo 09/03/2007, 05:54
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: Problema saltos de linea con file()

No lo he probado, pero quizá puedas hacer algo como esto:
Código PHP:
str_replace(chr(10),'',LineaDelArray); 
Sustitye el ASCII 10 (salto de línea) por nada.

Saludos!!!
  #3 (permalink)  
Antiguo 09/03/2007, 06:11
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (España)
Mensajes: 134
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: Problema saltos de linea con file()

Gracias, pero no me acaba de servir

Digamos que tendría que eliminar el (SALTO) en rojo antes de separar las lineas del array:

"valor1";"valor2(SALTO)";"valor3"(SALTO)
"valor11";"valor22";"valor33"(SALTO)

Si hago lo que tu dices, se entiende que primero hago el explode y tengo cada fila y quedaría así:

Linea 1: "valor1";"valor2(SALTO)
Linea 2: ";"valor3"(SALTO)
Linea 3: "valor11";"valor22";"valor33"(SALTO)

Digamos que ya parto mal del principio, porque ya tengo las filas mal montadas.
Debeía hacer ese replace que comentas del contenido entero del archivo, pero SÓLO de los saltos en rojo, los verdes los necesito para poder hacer el explode.

Alguna sugerencia???
  #4 (permalink)  
Antiguo 09/03/2007, 06:23
 
Fecha de Ingreso: mayo-2006
Ubicación: Madrid
Mensajes: 153
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: Problema saltos de linea con file()

Se me ocurre que como todos los saltos que no quieres van seguidos de comillas y los que quieres van precedidos de ellas, podrías hacer algo como lo anterior:

Código PHP:
str_replace(chr(10).'"','"',LineaDelArray); 
Entonces te sustituye sólo aquellos salto que van seguidos de comillas.
  #5 (permalink)  
Antiguo 09/03/2007, 07:43
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Problema saltos de linea con file()

Lo que puedes hacer es envez de cargar el archivo en un array (lo que hace file), es cargarlo en un string (lo que hace file_get_contents)

Entonces ya que tienes cargado el Archivo en un string, un explode se le aplicaria a todo el archivo.


_______
Si todavia quieres seguir utilizando el file
despues que lees el fichero $datos=file("file.txt"); y despues le aplicas un
$datos=str_replace( array("\n","\r") , array('',''),$datos);

( lo cual si funciona mira)
Código PHP:
<?

$datos 
"pepe jota lala saagfs
gasg at623235 sdggsd 2352 sdgsdggagas
agasgas gfasgfas 3623623
sdgsdgsd"
;
echo 
$datos;

echo 
'<br><br><br>';
$datos=str_replace( array("\n","\r") , array('',''),$datos);

echo 
$datos;





?>
imprime

Código:
pepe jota lala saagfs
gasg at623235 sdggsd 2352 sdgsdggagas
agasgas gfasgfas 3623623
sdgsdgsd<br><br><br>pepe jota lala saagfsgasg at623235 sdggsd 2352 sdgsdggagasagasgas gfasgfas 3623623sdgsdgsd
Es decir si elimino los enter despues de los <br> fijate que los enter pueden ser \n y \r (depende del s.o q los crea :P)
  #6 (permalink)  
Antiguo 09/03/2007, 09:12
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona (España)
Mensajes: 134
Antigüedad: 19 años, 3 meses
Puntos: 0
Re: Problema saltos de linea con file()

Muchas gracias a los dos, he estado haciendo pruebas con file_get_contents() y creo que podré solucionarlo.

Gracias a los dos por el interés
  #7 (permalink)  
Antiguo 09/03/2007, 09:25
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Problema saltos de linea con file()

Pues si quieres añadir un salto de línea a una string solo tienes que hacerlo más o menos así:

$string = $string.Chr(13).Chr(10), nada más.
  #8 (permalink)  
Antiguo 09/03/2007, 10:39
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Problema saltos de linea con file()

Cita:
Iniciado por ElJavista Ver Mensaje
Pues si quieres añadir un salto de línea a una string solo tienes que hacerlo más o menos así:

$string = $string.Chr(13).Chr(10), nada más.
jeje el motivo del Post era que el muxaxo tenia problemas con los saltos de lineas, no como agregarlos a un string


Saludos
  #9 (permalink)  
Antiguo 09/03/2007, 11:05
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Problema saltos de linea con file()

Sorry. No me puse a leer con atención.
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 01:20.