Wie überprüfe ich am besten ob das dateformat stimmmt.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie überprüfe ich am besten ob das dateformat stimmmt.

    Also ich habe ein eingabe Feld

    PHP-Code:
    echo " <tr>\n";
    echo 
    "    <td><label>Geb.-Datum: <br />(TT.MM.YYYY)</label><td>\n";
    echo 
    "    <td><input type=\"text\" name=\"ICQ\" value=\"\" title=\"ICQ-Nummer\" /><td>\n";
    echo 
    " </tr>\n"
    und nun is meine Frage wie ich überprüfen kann ob er es genauso eingegeben hat?

  • #2
    und nun is meine Frage wie ich überprüfen kann ob er es genauso eingegeben hat?
    Mittels RegExp zum Beispiel...
    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)

    Kommentar


    • #3
      ja aber wie ich verstehe reguläre ausdrücke irgendwie net richtig.
      Jednefalls denke ich das du dass meinst.
      Kennst du ein gutes tutorial (bitte auf deutsch) wo die gut erklärt werden.
      ich hab mir ja ma das angeschaut, da wird das auch ganz gut erklärt aber ich schecks trotzdem net.

      http://tut.php-quake.net/regex.html

      Kommentar


      • #4
        Dann schreib die Anforderung an den RegExp mal in Worten auf
        Code:
        Zwei Zahlen gefolgt von einem Punkt, dann nochmals zwei Zahlen gefolgt von einem Punkt und vier Zahlen
        Dabei gilt noch zu beachten, dass die erste Zahl des Tages nur aus dem Bereicht 0-3 kommen darf. Beim Monat muss die erste Zahl 0-1 sein. Beim Jahr sollte die erste Zahl 1 oder 2 sein. Wenn das Datum den RegExp überlebt, dann prüfst du das Datum noch auf Gültigkeit d.h. darauf dass dir keiner einen 31.02. reinschieben kann
        PHP-Code:
        $reg ='/([0-3]{1}[0-9]{1})\\.([0-1]{1}[0-9]{1})\\.([1-2]{1}[0-9]{3})/';
        preg_match($reg,$datum,$treffer);
        if(
        $treffer && !empty($treffer) && checkdate(intval($treffer[2]),intval($treffer[1]),$treffer[3])){
          echo 
        'Datum okay';
        }else{
          echo 
        'Datum nicht okay';

        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)

        Kommentar


        • #5
          Mhm, split und checkdate machen das ganze ohne RegExp. Wesentlich flotter.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            Mhm, split und checkdate machen das ganze ohne RegExp. Wesentlich flotter.
            OffTopic:

            Aber RegExp sind doch so schön...

            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)

            Kommentar


            • #7
              Ja, und Performancekiller. Irgendwie glaubt jeder alles mit Regulären Ausdrücken lösen zu müssen.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Stimme ich dir zu, dass man nicht "Ums-Verrecken" alles mit RegExp machen sollte. Da bin ich wohl etwas über's Ziel hinausgeschossen.
                Nur hat der RegExp eben den entscheidenden Vorteil, das Datum auch aus einem beliebig langem String zu ziehen (wollte der TS zwar nicht, weil er ja ein Form Feld hat)
                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)

                Kommentar


                • #9
                  Dafür sagst du aber auch, dass der 01.19.1000 ein valides Datum ist, während der 01.12.3000 keines mehr sein soll. Extrem Fehleranfällig, bzw. die nötigen Folgeprüfungen sprechen für mich klar gegen einen Einsatz von RegExp.
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #10
                    ...während der 01.12.3000 keines mehr sein soll
                    Der TS wollte aber auch, dass der User sein Geburtsdatum angibt. Bis jemand mit diesem Geburtsdatum vorbeikommt kannst du glatt noch 992 Jahre warten
                    Irgendwie habe ich das Gefühl, dass wir das nicht mehr erleben werden...
                    Und zu den "unmöglichen" Daten: Einfach den RegExp anpassen
                    PHP-Code:
                    $reg '/([0-2]{1}[0-9]{1}|3[0-1]{1})\\.(0[1-9]{1}|1[0-2]{1})\\.([1-2]{1}[0-9]{3})/'
                    Trotzdem, deine Lösung ist sicherlich die bessere Wahl

                    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)

                    Kommentar


                    • #11
                      aus welchem Grund begrenzst du die Jahreszahl zwischen 1000-2999?

                      Kommentar


                      • #12
                        Weil jemand, der in 2999 Geburtstag hat schon in 992 Jahren kommt, das sollte man dann noch mit berücksichtigen
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          aus welchem Grund begrenzst du die Jahreszahl zwischen 1000-2999?
                          Eigentlich würde es reichen nur Jahre ab ca 1900 bis 2008 zu berücksichtigen. Weil viele Internetuser werden nicht vor 1900 geboren worden sein und Geburtstagdaten in Zukunft kann es nicht geben
                          OffTopic:

                          Und 3000 habe ich aussen vorgelassen, weil in diesem Jahr PHP 163 erscheint und die haben wie man hört einen Bug mit 3000
                          Ausserdem sichert diese Einschränkung künftige Folgeaufträge zwecks Anpassung des Codes

                          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)

                          Kommentar


                          • #14
                            solche schwachsinnige Vorgabe seitens des Programmierers hasse ich ... das Programm soll IMHO möglichst flexibel sein, alles andere bitte dem User selbst entscheiden lassen.

                            Kommentar


                            • #15
                              Das erinnert mich immer daran, dass viele Entwickler glauben, dass es keine Vornamen mit 3 Zeichen gibt. Dabei sind die mit "Max", "Kai", "Jan" und "Tim" im deutschen Sprachraum nicht selten vertreten. Im selben Atemzug ist mein Städtename dann wieder mit 16 Zeichen zu lang
                              [FONT="Helvetica"]twitter.com/unset[/FONT]

                              Shitstorm Podcast – Wöchentliches Auskotzen

                              Kommentar

                              Lädt...
                              X