Mi problema es el siguiente: Por un lado tengo un fichero que se genera al
guardar un formulario y por otro uno ya existente que quiero sobreescribir hasta un determinado token a partir del anterior.
El problema con el que me encuentro al sobreescribir el fichero es el siguiente: si el número de caracteres que quiero escribir es inferior al número que ya contiene la linea, los carácteres que sobran permanecen en el fichero y se van arrastrando al hacer la sobreescritura.
Es decir, supongamos que fichero1.txt es el fichero nuevo generado y fichero2.txt
es el fichero que voy a sobreescribir hasta un cierto token y que ya contiene texto.
fichero1.txt:
Código:
fichero2.txt/*Linea de texto en fichero1.txt*/
Código:
y hago lo siguiente/*Linea de texto en fichero2.txt con más caracteres*/ /*Token final de sobreescritura*/
Código:
Despues de sobreescribir fichero1.txt en fichero2.txt, fichero2.txt quedaría así:$f1 = fopen("fichero1.txt","r+"); $f2 = fopen("fichero2.txt","r+"); while(!feof($f1)){ $buffer = fgets($f1,4096); fputs($f2,$buffer); fputs($f2,"\r\n"); }
fichero2.txt
Código:
En fichero2.txt permanecería la cadena de texto " más caracteres*/"./*Linea de texto en fichero1.txt*/ más caracteres*/ /*Token final de sobreescritura*/
Vamos a suponer ahora que fichero1.txt tiene más caracteres en esa linea que fichero2.txt. Es decir,
fichero1.txt
Código:
fichero2.txt/*Linea de texto en fichero1.txt con más caracteres*/
Código:
Despues de sobreescribir fichero2.txt quedaría así:/*Linea de texto en fichero2.txt*/ /*Token final de sobreescritura*/
fichero2.txt
Código:
En fichero2.txt me sobreescribiria el token./*Linea de texto en fichero1.txt con más caracteres*/ breescritura*/
¿como podría evitar este comportamiento y eliminar esos caracteres que sobran hasta el token de final de sobreescritura o evitar que me sobreescriba algo que no quiero?
La cuestión es que ambos casos se pueden dar de forma aleatoria, a veces la linea que se va a sobreescribir tendrá más caracteres y otras veces menos.
¿Como podría controlarlo?