PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Reguläre Ausdrücke Datum prüfen (http://www.selfphp.de/forum/showthread.php?t=11884)

pinot1 08.12.2005 20:05:35

Reguläre Ausdrücke Datum prüfen
 
Hallo,

folgendes Problem. Ich möchte für eine Datenbankabfrage sicherstellen, dass ein gültiges Datum im Textfeld 'datum' eingegeben wird. Die Prüfung führe ich so durch:

PHP-Code:

if(ereg('([0-9]{1,2}).([0-9]{1,2}).([0-9]{2,4})'$datum$regs)){ 

Das klappe soweit auch, ein Problem tritt allerdings auf, wenn für die Jahreszahl versehentlich lediglich nur 3 Stellen (z.B. 8.12.200) eingegeben werden.
PHP-Code:

{2,4

heisst ja 2-4, also ist 3 auch ein gültiger Wert.

Sicher gibt es auch ander Lösungsmöglichkeiten, würde es aber gern über einen regulären Ausdruck lösen.


Mike

xabbuh 08.12.2005 20:28:44

AW: Reguläre Ausdrücke Datum prüfen
 
Zunächst einmal: Benutze für reguläre Ausdrücke die Funktion der perl-kompatiblen regulären Ausdrücke.

Dann könnte die Überprüfung so aussehen:
PHP-Code:

<?php
    $regex 
'|^\d{2}\.\d{2}\.(\d{2}|\d{4})$|';
?>


pinot1 08.12.2005 22:34:50

AW: Reguläre Ausdrücke Datum prüfen
 
Hallo,
danke für die schnelle Antwort.
Leider bekomme ich jedoch die Fehlermeldung:

Warning: preg_match() [function.preg-match]: Unknown modifier '\' in .... on line 222


mein code sieht so aus:
PHP-Code:

$regex '|^\d{2}\.\d{2}\.(\d{2}|\d{4})$|';
preg_match($regex,$datum$regs); 


xabbuh 08.12.2005 22:42:34

AW: Reguläre Ausdrücke Datum prüfen
 
Nimm mal einen anderen Delimiter (z.B. /): /^\d{2}\.\d{2}\.(\d{2}|\d{4})$/

pinot1 08.12.2005 22:59:20

AW: Reguläre Ausdrücke Datum prüfen
 
Ja, das wars.

Vielen Dank

Damir 09.12.2005 07:44:40

AW: Reguläre Ausdrücke Datum prüfen
 
Hi,

Ein Datum sollte aber nicht nur vom Syntax her richtig sein - den 32.02.1972 will ich auch nicht in der DB haben.

http://www.selfphp.de/funktionsrefer.../checkdate.php

Damir

pinot1 11.12.2005 12:21:29

AW: Reguläre Ausdrücke Datum prüfen
 
ich auch nicht.

Daher pruefe ich anschliessend mit checkdate, d.h. ich erzeuge aus dem vom Format her geprüften Datum einen timestamp und prüfe dann mit checkdate. Voraussetzung für den timestamp ist allerding, das das Datumsformat stimmt.

Trotzdem Danke für den Hinweis


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:27:01 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.