preg_match("/^[0-9]{4}.[0-9]{2}.[0-9]{2}$/"

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

  • preg_match("/^[0-9]{4}.[0-9]{2}.[0-9]{2}$/"

    Hallo,

    ist das der richtige Aufbau für eine Prüfung eines Geburtsdatum im Format YYYY-MM-DD ?

    if(preg_match("/^[0-9]{4}.[0-9]{2}.[0-9]{2}$/",$geburtsdatum))

    Habe es nach der Anleitung aufgebaut, funktioniert auch soweit,
    wollte nicht wissen ob es a) sicher ist und b) ev. noch kürzer geht.

  • #2
    kleiner fehler:

    der Punkt ist ein spezieller Chrakter und muss mit \ escaped werden, ansonsten ziemlich optimal und sicher sowieso

    if(preg_match("/^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$/",$geburtsdatum))



    BTW: Sollte es nicht so aussehen: YYYY[COLOR=red]-[/COLOR]MM[COLOR=red]-[/COLOR]DD ?
    Zuletzt geändert von Luke; 03.03.2006, 23:57.

    Kommentar


    • #3
      1. prüfst du auf YYYY.MM.DD
      2. ist auch 0000.47.99 wahr

      warum machst du kein explode() auf den datum-string und nutzt z.B.checkdate ?
      Kissolino.com

      Kommentar


      • #4
        Okay also aktuell ist dann die Formatüberprüfung so sicher:

        /^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$/

        Wie kann man jetzt noch in diesem Ausdruck die Werte eingrenzen?

        Laut Anleitung sieht das ja so aus, als ob es nicht möglich ist.

        PS: Ich will alles in einer Abfrage erledigen, deswegen nicht erst mit explode() etc. rummachen.
        Zuletzt geändert von Truncate; 04.03.2006, 01:11.

        Kommentar


        • #5
          Wurzel hat doch n ganz guten vorschlag gemacht, ansonsten würd ich auch explode benutzen und dann die zahlen einzeln abfragen

          Kommentar


          • #6
            Wie kann man jetzt noch in diesem Ausdruck die Werte eingrenzen?
            das ist kein problem - willst du zum beispiel in der Jahreszahl kein null erlauben schreibst du einfach [1-9] (heisst das alles zwischen 1 und 9 erlaubt ist - geht zum beispiel auch mit [a-e]

            PS: Ich will alles in einer Abfrage erledigen, deswegen nicht erst mit explode() etc. rummachen.
            rummachen musst du garnichts es reicht:
            PHP-Code:
            <?php
            $tmp 
            explode($dein_datums_string);
            if(
            checkdate($tmp[0],$tmp[1],$tmp[2])){
            ....
            }
            das ganze geht im vergleich zu regex wesentlich schneller....
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar

            Lädt...
            X