Burda ilkin dosyayı içeriğini okumak için döngüye giriyorsun oysaki file() fonksiyonu senin ilk işlemdeki yaptığın şeyi yapmakta. İki kere döngüye girerek performansı düşürmektesin.

Diğer bir husus ise bir ay 28 - 31 arasında değişmektedir. yani date('d') hiç bir zaman 32 olamayacak dolayısıyla txt deki sıralanmış rakamlar da yanlış... Kişi her ay bu sözleri güncellemek zoruna kalacak..

O yüzden aşağıdaki kod daha hızlı sonuç döndürecektir.
<?php
function gununSozu()
{
	preg_match("#.*?".date('d')."\|\s(.*)#i",file_get_contents('soz.txt'),$soz);
	
	return $soz[1];	
}

echo gununSozu();
?>