Moin Moin!
Ich kenne PHP ja nicht so gut, aber da es viel von Perl kopiert hat, schreib ich einfach mal meine Perl-Lösung hin. Der Trick ist, im grep eine Funktion aufzurufen, die prüft, ob Du die Zeile haben willst oder nicht.
sub datum_bis($$) # $rohzeile, $datum_MMDD
{
my ($line,$referenz)=@_;
$line=~/^\d{2}.\d{2}./ or return 0; # wenn das Pattern nicht paßt, ist die Zeile ohnehin Schrott.
return "$2$1" <= $referenz; # Monat vor den Tag gezogen macht den Vergleich leichter.
}
open FILE,"<datei.txt" or die "Oops: $!";
my @lines=grep { datum_bis($_,'0331') } <FILE>;
close FILE;
Übrigens: Was ist mit Jahreswechsln ? Ich sehe in Deinen Daten keine Jahreszahl.
Und noch ein "Übrigens": Wenn Du Dein Datum in der Reihenfolge Jahr - Monat - Tag ablegst, wird die Sortierung wesentlich einfacher.
Alexander