Foros del Web » Programando para Internet » PHP »

\n me quita un caracter

Estas en el tema de \n me quita un caracter en el foro de PHP en Foros del Web. Buenas, básicamente es esto: Código PHP: $escribir = $_POST [ 'opcion' ]. ":" . $_POST [ 'valor' ]. "\n" ; fwrite ( $archivo ,  $escribir ...
  #1 (permalink)  
Antiguo 02/07/2014, 14:10
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
\n me quita un caracter

Buenas,
básicamente es esto:
Código PHP:
$escribir=$_POST['opcion'].":".$_POST['valor']."\n";
fwrite($archivo$escribirstrlen($escribir)); 
y el archivo que escribe es el siguiente:
Código:
/* -------------------------------------------------- */
/* Archivo de configuración del programa de SAT BalMa */
/* -------------------------------------------------- */
[divs abiertos]
clientes:none
[end]
lo que hace el código es sobreescribir la línea "clientes:none" y sustituirla por otra dada.
El problema es que al añadir el \n me quita también el [ de la siguiente línea.
Si queréis más código me lo decís. Gracias a todos ;)
Atentamente,
Cristian Molina
  #2 (permalink)  
Antiguo 02/07/2014, 14:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: \n me quita un caracter

Hola,

Me da mala espina el tercer parametro (longitud) que le pasas al fwrite(), no lo uses y prueba
__________________
Salu2!
  #3 (permalink)  
Antiguo 02/07/2014, 14:16
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: \n me quita un caracter

Sigue haciendo lo mismo
  #4 (permalink)  
Antiguo 02/07/2014, 14:35
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: \n me quita un caracter

Estoy googleando y he encontrado "PHP_EOL" pero funciona peor. Ni si quiera hace el salto de línea.
¿Por qué no funciona? Está bieeen
  #5 (permalink)  
Antiguo 02/07/2014, 14:37
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: \n me quita un caracter

El archivo lo abriste para sobre-escritura y te colocaste con el cursor en ese lugar ?

Si es asi....... no puedes escribir mas bytes de los que tienes para ese "registro" porque estaras como bien dices invadiendo el siguiente.


Soluciones ?

a) Leer todo el archivo y escribir por completo de nuevo y otra seria....

b) Abrir un segundo archivo (archivo nuevo), escribir en este segundo, luego borrar el primero y renombrar el segundo como el primero
__________________
Salu2!
  #6 (permalink)  
Antiguo 02/07/2014, 14:41
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: \n me quita un caracter

Hola, el archivo lo abro así:
$archivo=fopen("config.cfg","r+");

Si de verdad es esto, que pateo...

EDIT: si que coloco el cursor en esa linea y fwrite
  #7 (permalink)  
Antiguo 02/07/2014, 15:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: \n me quita un caracter

Entonces... tienes las opciones que te di....... ten en cuenta sino estas escribiendo otros "registros"

Si el archivo no es muy grande me decantaria por la opcion (a) que es la que consume mas memoria pero no interesa si es pequeño:


Lee todo el archivo (hasta puede ser con file_get_contents) y lo manipulas en memoria, luego lo escribes completo otra vez
__________________
Salu2!
  #8 (permalink)  
Antiguo 02/07/2014, 15:20
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: \n me quita un caracter

vale, gracias ;)
  #9 (permalink)  
Antiguo 02/07/2014, 21:42
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: \n me quita un caracter

y por que no usas <br> que si es etiqueta html

puedes guardar la cadena como

Código PHP:
Ver original
  1. $escribir="$variable".'<br>';

ponerle a una variable al final una cadena de caracteres fija y guardarla en otra variable
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #10 (permalink)  
Antiguo 02/07/2014, 21:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: \n me quita un caracter

Cita:
Iniciado por arcanisgk122 Ver Mensaje
y por que no usas <br> que si es etiqueta html

puedes guardar la cadena como

Código PHP:
Ver original
  1. $escribir="$variable".'<br>';

ponerle a una variable al final una cadena de caracteres fija y guardarla en otra variable
Sera porque esta escribiendo un archivo de configuración y no una pagina web ?
__________________
Salu2!

Etiquetas: Ninguno
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 10:46.