phpbar.de logo

Mailinglisten-Archive

[php] Problem bei Regulären Ausdrücken

[php] Problem bei Regulären Ausdrücken

Florian Grell grell at werk4.net
Don Apr 5 11:47:45 CEST 2007


Hallo Christian!

Dein Problem ist zwar mittlerweile anscheinend gelöst, aber trotzdem hier
noch ein weiterer Vorschlag.

> Die User haben in einen Formular die Möglichkeit ein Datum
> einzugeben, und
> können zwischen 4 Formaten wählen:
>
> TTMMJJ, TTMMJJJJ, TT.MM.JJ, TT.MM.JJJJ
>
> Eine Methode meiner Klasse soll den übergebenen String überprüfen und
> ledeglich formatieren und falls der übergebene String keine
> Übereinstimmung
> findet false zurückliefern.

Folgender Ausdruck erschlägt alle Eingaben auf einmal:

^(0?[1-9]|1[0-9]|2[0-9]|3[01])\.?(0?[1-9]|1[012]|)\.?((19|2[0-9])?([0-9]{2})
)$

Wenn Du preg_match (übrigens schneller als ereg) darauf anwendest, bekommst
Du ein Array zurück, welches in $a[1] den Tag, $a[2] den Monat und $a[3] das
Jahr beinhaltet.

Beispiel:
$sInput = '22.12.2007';
$sRegex =
'^(0?[1-9]|1[0-9]|2[0-9]|3[01])\.?(0?[1-9]|1[012]|)\.?((19|2[0-9])?([0-9]{2}
))$';
preg_match($sRegex, $sInput, $aMatch);
print_r($aMatch);

Sollte sowas ergeben:
$aMatch[1] = '22';
$aMatch[1] = '12';
$aMatch[1] = '2007';

Du musst dann noch die Stringlängen (vor allem vom Jahr) prüfen und ggf. auf
vier Stellen erweitern.

Superprogramm zum Regex testen: http://weitz.de/regex-coach/

Hth,
Florian


php::bar PHP Wiki   -   Listenarchive