Hmmm. creo que ya llegue tarde pero bueno. Tambien podias resolver tu problema haciendo algo como lo siguiente.
Código PHP:
//Abrimos fichero
$fichero = file("mensajestxt");
//ordenamos en forma inversa el arreglo
krsort( $fichero );
//Numero maximo de registros a mostrar
$reg_max = 3;
//calculamos una diferencia para determinar el
// el numero de resgistros restante en el
//arreglo, depues de quitar el numero de registros
//que vamos a mostrar
$mostrar = sizeof($fichero) - $reg_max;
while( sizeof( $fichero ) > $mostrar )
{
//Obtenemos registro y lo separamos
// para imprimir
$libro = explode("|", array_shift( $fichero ));
echo $libro[0]."\n</br>";
echo $libro[1]."\n</br>";
echo $libro[2]."\n</br>";
}
Igual puede mejorarse metiendolo dentro de una funcion o buscando otro algoritmo que haga mas facil la tarea.