ho provato cosi!!!

<?php
// apro il file in lettura
$identificatore=fopen ("test.txt", "r");

// testo da trovare all'interno del file
$host="hostname";
$msg="msg";
$date="date";
$risultato="$host|$msg|$date";
$counter=0;

// eseguo il ciclo fino alla fine del file
while (!feof ($identificatore)){

// incremento il $counter di una unità
$counter ++;

// registro nella variabile $buffer il contenuto della linea
$buffer=fgets($identificatore, 4096);

// controllo con eregi se all'interno di $buffer c'è il testo che sto cercando
// se l'esito è positivo stampo a video il suo contenuto
if (ereg($risultato, $buffer))

$string = str_replace("CIAO", "TEST", $buffer);


echo "$string";

}

// chiudo il file
fclose ($identificatore);
?>
file di testo

msg="errore nel file di log";
hostname="ensv0rgx";
date="Mar 04 09:43:09 2008";
risultato dell'echo
msg="errore nel file di log"; ="ensv0rgx"; date="Mar 04 09:43:09 2008"; date="Mar 04 09:43:09 2008"; date="Mar 04 09:43:09 2008"; date="Mar 04 09:43:09 2008";
Ora il discorso è che sono riuscito a cambiare la parola 'hostname' con un blank...
ma il campo data me lo scrive tre volte e più (se cancello la riga)
$string = str_replace("hostname", " ", $buffer);
tutto rifunziona alla perfezione!! da cosa dipende
Scusa ma all'inizio del post ho inserito dei termini fittizzi (CIAO / TEST) ora ho usato quello che realmente mi occorre