Consulta:

Hola,
Estoy buscando la forma de cambiar el valor de una línea en un txt sin tener que regenerar el txt por completo. Seria como hacer un update en sql.. cambias la línea en concreto según la “id” por ejemplo.

Supongamos que el contenido en el txt es:
lalalala res nose lala
cortaraki iee ueue llla
232323 ieieie ooo aaa

..y quiero que la segunda linea “cortaraki” cambie el contenido. Entonces mi php es:


$filename = “prueba.txt”;
$dataFile = fopen( $filename, “r+” );

if ( $dataFile )
{
while (!feof($dataFile))
{
$buffer = fgets($dataFile, 4096);

$iezoo = split(‘ ‘,$buffer);

if ($iezoo[1] == “cortaraki”){
fwrite($dataFile, “otracosa uno dos tres”);
}
else{
//nada…
}
}
fclose($dataFile);
}

Pero solo consigo crear una 4a línea, no me modifica esa en cuestión.

Me podes echar una mano?

Respuesta:

Para empezar, el uso de archivos es muy tedioso y te quita mucho tiempo.

Te sugiero uses una tabla en base de datos.

Por otro lado si decides continuar con el uso de archivos échale un ojo a estas dos funciones:
file_get_contents: para obtener todo el contenido del archivo. referencia: http://mx.php.net/function.file-get-contents
str_replace: para sustituir la cadena que tu quieras. referencia: http://mx.php.net/str_replace

Otra solución alterna sería:

/*1 obtienes todo el contenido*/
while (!feof($dataFile))
{
$buffer[] = fgets($dataFile, 4096);
}
/*Sustituyes la linea N */

$buffer[N] = “Otra cosa”;

Via: Desarrolloweb