supponiamo che il file sia strutturato così:

05-05-2007|antonio|30|Milano
05-05-2007|pippo|80|Milano
05-05-2007|demetrio|11|Milano
05-05-2007|ubaldo|69|Milano
05-05-2007|ugo|18|Milano



e che tu abbia un file di riferimento 'fields_utenti.txt'dove dichiari i campi della tabella (se non ce l'hai ti conviene farlo)

data
utente
eta
citta


Codice PHP:

<?php

if (RefreshLine("utenti","eta","69","35","nome = ubaldo") == 1)
{
echo 
"modifica eseguita</br>";
}
else
{
echo 
"errore!!</br>";
}




function 
RefreshLine($table,$field,$old,$new,,$cla)  // vecchio valore, nuovo valore,campo, il riferimento (in mysql la clusula WHERE)
  
{
  
$fields=array();
  
$archivio=file("$table.txt");
  
$table_fields=file("fields_$table.txt");
  foreach (
$table_fields as $key=>$name_field$table_fields[$key]=trim($name_field);


  
// elaboro la clusula
  
list($cla_field,$cla_value)=explode("=",$cla); // cla_field è il campo di condizione, cla_value è la variabile di confronto
  // end elaboro la clusula
    
  
foreach ($archivio as $pos=>$line)
    {
    
$vars_line=explode("|",$line);
    foreach (
$vars_line as $key=>$val
      {
      
$fields[$table_fields[$key]]=trim($val);      
      }
    if (
$fields[$field] == trim($old) && $fields[trim($cla_field)] == trim($cla_value))
        {
        
$fields[$field] = trim($new); // riassegno il nuovo valore
        
$archivio[$pos]=implode("|",$fields)."\n"// creo la linea
        
unlink ("$table.txt","w"); //cancello la tabella
        
$link_tab=fopen("$table.txt","a+"); //ricreo la tabella
        
foreach ($archivio as $new_linefwrite($link_tab,$new_line);
        
fclose($link_db);
        return 
1// ok eseguito
        
}
    }
  return 
0// non trovato
  
}


?>
prova, non l' ho testa quindi potrebbero esserci errori di sintassi ca il concetto è corretto