Hola a todos.
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:
/*Linea de texto en fichero1.txt*/
fichero2.txt
Código:
/*Linea de texto en fichero2.txt con más caracteres*/
/*Token final de sobreescritura*/
y hago lo siguiente
Código:
$f1 = fopen("fichero1.txt","r+");
$f2 = fopen("fichero2.txt","r+");
while(!feof($f1)){
$buffer = fgets($f1,4096);
fputs($f2,$buffer);
fputs($f2,"\r\n");
}
Despues de sobreescribir fichero1.txt en fichero2.txt, fichero2.txt quedaría así:
fichero2.txt
Código:
/*Linea de texto en fichero1.txt*/
más caracteres*/
/*Token final de sobreescritura*/
En fichero2.txt permanecería la cadena de texto " más caracteres*/".
Vamos a suponer ahora que fichero1.txt tiene más caracteres en esa linea que fichero2.txt. Es decir,
fichero1.txt
Código:
/*Linea de texto en fichero1.txt con más caracteres*/
fichero2.txt
Código:
/*Linea de texto en fichero2.txt*/
/*Token final de sobreescritura*/
Despues de sobreescribir fichero2.txt quedaría así:
fichero2.txt
Código:
/*Linea de texto en fichero1.txt con más caracteres*/
breescritura*/
En fichero2.txt me sobreescribiria el token.
¿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?