[REGEX] datum darf nur 31.12.9999

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [REGEX] datum darf nur 31.12.9999

    hallo user

    in meinem terminkalender soll das datum (vorerst) nach dem muster tt.mm.yyyy eingetragen werden, nun würde ich gerne prüfen ob bei tt maximal die zahl 31 und bei mm nur maximal ne 12 drin vorkommt.

    ich dachte ich löse das mit regex, was ich bis jetzt hab ist:
    Code:
    '/^\d{2}\.\d{2}\.\d{4}$/'
    soweit so gut, nur wie bring ich der patter die 31 und 12 geschichte bei ?

    kennt wer sich damit aus ?
    4cms.de

  • #2
    PHP Code:
    $datum explode('.'$input);

    $datum[0] = max((int)$datum[0], 31);
    $datum[1] = max((int)$datum[1], 12);
    $datum[2] = max((int)$datum[2], 9999);
    $datum implode('.'$datum);

    if (
    $datum != $input)
      echo 
    'Komisch!'
    Wobei eine Prüfung mit strtotime wohl besser wäre...
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      Code:
      $day = '((0[1-9])|([1-2][0-9])|(30|31))';
      $month = '((0[1-9])|(1[0-2]))';
      $date = '/^'.$day.'\.'.$month.'\.\d{4}$/'
      ungetestet

      Comment


      • #4
        [REGEX] datumcheck

        danke euch beiden
        leider kann ich das nicht testen, mein provider brauch den ganzen tag um ne gecraschte platte von meinem server zu tauschen

        ich gebe aber rückmeldung sobald ich weiterbasteln kann.

        gibt es eingendlich eine seite oder ein tool mit dem ich regex testen kann und die/das ihr mir empfehlen könnt ?

        Gruß bUTschy
        4cms.de

        Comment


        • #5
          ah, ich hab da was gefunden

          http://pcre.nophia.de/evaluate

          mal checken wie sich das ding bedienen läßt
          4cms.de

          Comment


          • #6
            Re: [REGEX] datum darf nur 31.12.9999

            also so gehts am leichtesten:

            Code:
            if (preg_match('/^(\d{2})\.(\d{2})\.(\d{4})$/', $date, $hits)
                 && checkdate($hits[2], $hits[1], $hits[3])) {
               // richtiges datum
            }
            der vorteil ist das man so auch z.b. den 31.02.2000 umgehen kann

            Comment


            • #7
              PHP Code:
              $datum explode('.',$datum);
              if(
              checkdate($datum[1],$datum[0],$datum[2]) && $datum[2]<10000){
                  echo 
              'Datum ist gültig';
              }else{
                 echo 
              'Dieses Datum akzeptiere ich nicht';

              Nur auf die Maximalwerte zu prüfen macht nicht soviel Sinn, denn dann würde auch ein 31.02.2005 als gültig angesehen werden. Den RegExp brauchst du imho gar nicht, denn das macht checkdate() besser...

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Comment

              Working...
              X