Problem mit preg_match statt ereg nach PHP Umstellung

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

  • #16
    Zitat von Miranda Beitrag anzeigen
    Wenn ich das oben im Zitat richtig verstanden habe, dann müsste ich also einfach nur statt der {2,4} bei der Domainendung die 4 z.B. mit 10 austauschen. Richtig?
    Ja, das ginge, doch möglicherweise könntest Du dann auch statt ([a-z]{2,4})$ gleich ([a-z]+)$ verwenden.
    Zuletzt geändert von Melewo; 07.04.2013, 12:41.

    Kommentar


    • #17
      okay. Ich habe es verstanden *freu*

      Vielen, vielen Dank

      Kommentar


      • #18
        neue Frage zum Datum:


        PHP-Code:
        $neudatum '2013-04-12';
            
        if (
        preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/'$neudatum))
        {
           echo 
        'Das Datumsformat wurde richtig eingegeben. '.$neues_datum;

        else 
        {
           echo 
        'Das Datumsformat ist ungültig. '.$neudatum;

        Soweit so gut.

        Was aber, wenn ein ungültiges Datum eingegeben wird? Z.B. 2013-13-41
        Noch wird dies ja auch als richtige Eingabe gewertet.

        Wie kann man das abfangen? Ich bekomme es nur mit einer Endlosprogrammierungsabfrage (schönes Wort ) hin. Aber ich denke, das es einen ganz einfachen Weg gibt.

        Stimmts?

        Könnt ihr mir hier auch weiterhelfen?

        Kommentar


        • #19
          Zitat von Miranda Beitrag anzeigen
          Endlosprogrammierungsabfrage (schönes Wort )
          Vielleicht nicht endlos, doch was hälst Du von etwas verschachteln?
          PHP-Code:
          <?php

          $neudatum 
          '2013-12-31';
              
          if (
          preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/'$neudatum$aktuell)) {

              if (
          $aktuell[2] <= 12) {
              
                  echo 
          "Ich bin gleich oder kleiner als 12 Monate.<br>\n";
              
                  if (
          $aktuell[3] <= 31) {
                  
                      echo 
          "Ich bin gleich oder kleiner als 31 Tage.<br>\n".
                      
          "Das Datumsformat wurde richtig eingegeben. ".$neudatum."<br>\n";        
                  }
                  else {echo 
          "Anzahl der Tage stimmt nicht.<br>\n";
                  }    
              }
              else {echo 
          "Anzahl der Monate stimmt nicht.<br>\n";
              }

          else {echo 
          "Das Datumsformat ist ungültig. ".$neudatum."<br>\n";


          ?>
          Gibt möglicherweise noch bessere Lösungen, doch wenn Du das noch von einer Funktion einrahmen würdest, sehe es auch schon brauchbar aus.

          Kommentar


          • #20
            So ähnlich würde meine Lösung auch aussehen.
            Das Problem hierbei sind die Tage. Nicht jeder Monat hat 31 Tage und am "schlimmsten" durch die Schaltjahre, der Februar.
            *lach* deshalb Endlosprogrammierung

            Ich dachte daher, dass es eventuell eine Lösung gibt, in der die Eingabe z.B. mit dem Serverkalender abgeglichen werden kann, oder so ähnlich.

            Kommentar


            • #21
              Ja, das sollte mit cal_days_in_month kein Problem sein:

              PHP: cal_days_in_month - Manual

              Nur ich kenne nicht alle Funktionen, die es da irgendwo gibt.
              Es funktioniert zumindest:

              PHP-Code:
              <?php

              $neudatum 
              '2013-02-21';
                  
              if (
              preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/'$neudatum$aktuell)) {

                  if (
              $aktuell[2] <= 12) {
                  
                      echo 
              "Ich bin gleich oder kleiner als 12 Monate.<br>\n";
                      
                      
              $tage cal_days_in_month(CAL_GREGORIAN$aktuell[2], $aktuell[1]);
                  
                      if (
              $aktuell[3] <= $tage) {
                      
                          echo 
              "Ich bin gleich oder kleiner als ".$tage." Tage.<br>\n".
                          
              "Das Datumsformat wurde richtig eingegeben. ".$neudatum."<br>\n";        
                      }
                      else {echo 
              "Anzahl der Tage stimmt nicht.<br>\n";
                      }    
                  }
                  else {echo 
              "Anzahl der Monate stimmt nicht.<br>\n";
                  }

              else {echo 
              "Das Datumsformat ist ungültig. ".$neudatum."<br>\n";


              ?>
              Zuletzt geändert von Melewo; 13.04.2013, 18:56.

              Kommentar


              • #22


                das funktioniert

                Kommentar


                • #23
                  Habe es noch ein bisschen angepasst, nun wird auch die 00 abgefangen

                  PHP-Code:
                  $neudatum '2012-02-01';
                     
                  if (
                  preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/'$neudatum$aktuell))
                  {
                      if (
                  $aktuell[2] <= 12 && $aktuell[2] >= 1)
                      {
                           echo 
                  'Ich bin gleich oder kleiner als 12 Monate und gleich oder größer 1 Monat.<br />';

                           
                  $tage cal_days_in_month(CAL_GREGORIAN$aktuell[2], $aktuell[1]);

                           if (
                  $aktuell[3] <= $tage && $aktuell[3] >= 1)
                           {
                             echo 
                  'Taganzahl ist existent!<br />';
                           }
                           else
                           {
                              echo 
                  'Taganzahl zu hoch oder 00';
                           }
                       }
                       else
                       {
                            echo 
                  'Ich bin größer als 12 Monate oder 00';
                       }
                  }
                  else
                  {
                      echo 
                  'Das Datumsformat wurde falsch eingegeben!';

                  Kommentar


                  • #24
                    Na prima, da bin ich auch zufrieden und habe wieder eine Funktion mehr kennengelernt.

                    Kommentar

                    Lädt...
                    X