Foros del Web » Programando para Internet » PHP »

Fwrite (a vueltas con salto de línea)

Estas en el tema de Fwrite (a vueltas con salto de línea) en el foro de PHP en Foros del Web. Mi problema es que quiero cuando escribo un fichero con esta función quiero forzar un salto de línea. Yo tengo la siguiente función Código PHP: ...
  #1 (permalink)  
Antiguo 08/04/2009, 02:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 7 meses
Puntos: 4
Fwrite (a vueltas con salto de línea)

Mi problema es que quiero cuando escribo un fichero con esta función quiero forzar un salto de línea.

Yo tengo la siguiente función
Código PHP:
function escribirln($ruta,$file,$arraycadena){
    
#Abrimos el fichero en modo de escritura 
    
$DescriptorFichero fopen($ruta.$file,"w"); 
    
#Escribimos las lineas de texto
    
for($i=0;$i<count($arraycadena);$i++){
        
fputs($DescriptorFichero,$arraycadena[$i]);
    }
    
fclose($DescriptorFichero); 

Por cada "fputs($DescriptorFichero,$arraycadena[$i]);" del array quiero forzar un salto de línea y que tenga compatibilidad tanto para servidores linux como windows. He probado /n y otra secuencia pero me los escribe tal cual en el fichero de texto. A ver si alguien me puede echar una mano.
  #2 (permalink)  
Antiguo 08/04/2009, 02:54
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Fwrite (a vueltas con salto de línea)

Cita:
Iniciado por xurxinho Ver Mensaje
Mi problema es que quiero cuando escribo un fichero con esta función quiero forzar un salto de línea.

Yo tengo la siguiente función
Código PHP:
function escribirln($ruta,$file,$arraycadena){
    
#Abrimos el fichero en modo de escritura 
    
$DescriptorFichero fopen($ruta.$file,"w"); 
    
#Escribimos las lineas de texto
    
for($i=0;$i<count($arraycadena);$i++){
        
fputs($DescriptorFichero,$arraycadena[$i]);
    }
    
fclose($DescriptorFichero); 

Por cada "fputs($DescriptorFichero,$arraycadena[$i]);" del array quiero forzar un salto de línea y que tenga compatibilidad tanto para servidores linux como windows. He probado /n y otra secuencia pero me los escribe tal cual en el fichero de texto. A ver si alguien me puede echar una mano.

Aclaración: he mirado en el foro si pongo esta solución

fputs($DescriptorFichero,,$arraycadena[$i],"\n"); me pone un fichero en blanco

Si pongo esta que es la correcta creo:
fputs($DescriptorFichero,,$arraycadena[$i]."\r\n") me da como resultado en el fichero (es un fichero en css)

/* CSS Document */a.menu_sup_off{font-size:10px;font-weight:bold;text-decoration:none;color:#A42626;}\r\na.menu_sup_hove r{font-size:10px;font-weight:bold;text-decoration:underline;color:#9C9C0F;}\r\na.menu_sup _on{font-size:10px;font-weight:bold;text-decoration:none;color:#E8CBCB;}\r\n
  #3 (permalink)  
Antiguo 08/04/2009, 03:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Fwrite (a vueltas con salto de línea)

Lo he arreglado cambiando un poco la función y consultando este foro en una publicación anterior (fantástico). El salto de línea hay que ponerlo en otro fputs y todo correcto, repito fantástico


function escribirln($ruta,$file,$arraycadena){
#Abrimos el fichero en modo de escritura
$DescriptorFichero = fopen($ruta.$file,"w");
#Escribimos las lineas de texto
for($i=0;$i<count($arraycadena);$i++){
fputs($DescriptorFichero,$arraycadena[$i]);
fputs($DescriptorFichero,"\r\n");
}
fclose($DescriptorFichero);
}
  #4 (permalink)  
Antiguo 08/04/2009, 03:04
 
Fecha de Ingreso: diciembre-2005
Mensajes: 39
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Fwrite (a vueltas con salto de línea)

Creo algo asi me ha pasado, en lugar de usar /n , es un comando para imprimir un caracter, y este caracter seria una tabulacion o un salto de linea, ahorita no recuerdo el comando XD, pero ignoro si sirva para linux, pero en windows si me sirvio :)
  #5 (permalink)  
Antiguo 08/04/2009, 03:10
 
Fecha de Ingreso: marzo-2009
Mensajes: 171
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Fwrite (a vueltas con salto de línea)

Gracias kleimore pero a mi me funciona cambiando la sentencia

fputs($DescriptorFichero,$arraycadena[$i]."\r\n");

por las sentencias

fputs($DescriptorFichero,$arraycadena[$i]);
fputs($DescriptorFichero,"\r\n");

con \n sólo ya me funciona \r lo puse por lo que leí por ahí.

Puede ser que haya que utilizar algún tipo de secuencia de escape en "\r\n" para que no lo interprete como un string más, pero en fin la segunda solución me funcionó igual.
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 21:37.