Y si usas el salto de linea como delimitador de registros puedes usar la función:
fgetcsv() .. la cual te lee una linea de tu archivo (tomando como tal un \n salto de linea - registro) .. y a su vez internamente le aplica un explode() usando la cadena que definas .. todo en una misma función, generando un array de `n´ elementos .. tantos como "campos" tiene tu "registro":
Código PHP:
<?
$f=fopen("BD.txt","r");
while($registro=fgetcsv($f,4000,"[s]")){
echo $registro[0]." -- ".$registro[1]." -- ".$registro[2];
}
?>
Un saludo,