Ne kazes glavnu stvar a to je koliko ce biti max upisa u taj file?
Ako je fajl ogroman, koristi fgets() koja cita red po red iz fajla.
file() ucitava ceo file u array, red po red. I te vrednosti iz array[line] nikako ne mozes da proveravas sa if nego sa string search funkcijama. To je najverovatnije razlog zasto ti kod ne radi. Takodje, sve to potencijalno moze da zauzme mnogo mem (velicina fajla).
Ako su fajlovi relativno mali mozes da napravis svoj array objekata ili 2D array koji ces sa serialize i file_put_contents da ubacis u file. Sa file_get_contents i unserialize ucitavas taj array i radis sa njim sta god hoces. Ukljucujuci i standardnu if pretragu

Objekat bi u tvom slucaju bilo nesto tipa $obj->ime, $obj->pol, $obj->smer, $obj->blablabla. A sve to moze i kao 2D array numericki ili asocijativni.