quando fai la prima array non fai altro che ottenere una singola riga...
ovvero ogni indice della prima array sarà una cosa del tipo:

0 > 1;4 genn 2008;eccetera
1 > 2;4 genn 2008;eccetera
2 > 3;4 genn 2008;eccetera
3 > 4;4 genn 2008;eccetera

di conseguenza potrai accedere...alle singole righe del tuo file di testo...
a che pro?

ti serve esclusivamente per eliminare il primo numerino che è il tuo ID e modificarlo secondo le tue esigenze...

come?

$subarray = explode(';', $array[$incr]);

dove $incr è un numerino autoincrementante utilizzato per scorrerti la prima array...

ESEMPIO PRATICO


<?php

// operazioni per aprire il file e leggerne il contenuto
(...)

// queasta variabile ti consentirà di riordinare le singole righe nel una venga cancellata...
$kiave = 0;
$reParse= array();
$valore_preso_dal_form_per_eliminare_una_riga = $_POST[valore_preso_dal_form_per_eliminare_una_riga]; // controlla che sia un numero...

if ($valore_preso_dal_form_per_eliminare_una_riga < 1 OR !is_int($valore_preso_dal_form_per_eliminare_una_r iga))
die('Solo numeri, please!!!');

// crea la prima array, quella per ogni singola riga...
$array = explode ("\n", $contenuto_file_di_testo);

for ($incr = 0; counr($array); $incr++)
{


// in questo ciclo avrai le singole righe...

if ($incr == ($valore_preso_dal_form_per_eliminare_una_riga-1)){ // esempio: vuoi eliminare la riga 5, quindi confrontiamo il valore $incr con 4

// non facciamo niente...

} else {

// spezziamo i singoli valori di ogni singola riga...

$sub_array = explode(';', $array[$incr]);

for ($k=0; count($sub_array) > $k; $k++)
{

// quest'altro ciclo ti consente di accedere ai singoli valori di ogni singola riga...

$kiave = $kiave + 1;

// sostituiamo l'identificativo della riga con uno appena generato...
// aggiungo oltre al numerino anche il punto e virgola, ma fai attenzione vi è una remota possibilità che se in un altro campo della riga ci sia lo stesso numerino seguito dal punto e virgola...beh verrà cambiato anche quello, in alternativa utilizza quella funzione che hai trovato tu...
$riga = str_replace($sub_array[0] . ';', $kiave . ';', $sub_array($k));

$reParse[] = $riga;

}

// adesso che abbiamo modificato la riga...

// qui finisce l'if per cancellare la riga...
}

}

// abbiamo finito...
ci ritroviamo con una super array chiamata reParse che dovrebbe contenere tutti i messaggi riordinati senza la riga cancellata...

// facciamo un controllo per scrupolo...
if (count($reParse) < 1)
die ('l\'array è vuota...meglio fermarsi e fare un po\' di debug...');

(cancella il vekkio file e riscrivici dentro il contenuto dell'array )

echo 'fine!';


?>