Probleme mit regulären Ausdrücken

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

  • Probleme mit regulären Ausdrücken

    Hallo zusammen,

    Will abfragen, ob der Wert in $datum der Konvention zahl,zahl,zahl entspricht.

    Die Funktion:


    Code:
    $num="([0-99])";
    $datum = 2,2,2
    
            if(preg_match("/^$num\,$num\,$num\?$",$datum))
            {
                    print $datum;
                    return 1;
            }
    
            print "nö";
            return 0;

    liefert allerdings immer 0 zurück. Ich habs dann spasseshalber mit


    Code:
    		$test = 1;
    
    		print $test;
            if(preg_match("^[0-200]$",$test))
            {
                    print $abflugdatum;
    	return 1;
            }
             else {
            print "nö";
           return 0;
    }


    getestet - das gleiche Ergebniss.

    Was läuft da schief?
    Danke

  • #2
    PHP-Code:
    $datum '2,2,2';

    if ( 
    preg_match '/^[0-9]+\,[0-9]+\,[0-9]+$/'trim $datum ) ) )
    ... 
    EDIT:
    [0-99] -> [0-9]
    Zuletzt geändert von tontechniker; 05.05.2007, 22:03.
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      Re: Probleme mit regulären Ausdrücken

      Original geschrieben von filth
      Was läuft da schief?
      zuersteinmal, dass deine problembeschreibung nicht stimmt!

      variante1: Parse error: syntax error, unexpected ',' in ...
      variante2: Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in ...

      Kommentar


      • #4
        Original geschrieben von tontechniker
        PHP-Code:
        $datum '2,2,2';

        if ( 
        preg_match '/^[0-99]+\,[0-99]+\,[0-99]+$/'trim $datum ) ) )
        ... 
        auch mal mit $datum = '2,666,2'; probiert?

        Kommentar


        • #5
          auch mal mit $datum = '2,666,2'; probiert?
          Nein ... Fehler von mir - muss [0-9] heißen.
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #6
            Original geschrieben von tontechniker
            Nein ... Fehler von mir - muss [0-9] heißen.
            passt dann aber immer noch nicht

            Kommentar


            • #7
              Da wäre ich andere Meinung. http://regexp-evaluator.de/evaluator...2cfc/#ergebnis
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #8
                Original geschrieben von tontechniker
                Da wäre ich andere Meinung. http://regexp-evaluator.de/evaluator...2cfc/#ergebnis
                ich hab's so verstanden, dass der wertebereich einer zahl zwischen 0-99 liegen kann, aber vielleicht klärt uns der op noch auf.

                in diesem fall würde nämlich mein vorschlag falsch sein:
                PHP-Code:
                $datum='2,666,2';

                $num='([0-9]|[1-9]{2})';

                if(
                preg_match("/^$num,$num,$num$/",$datum))
                 echo 
                'match';
                else
                 echo 
                '!!! no match !!!'

                Kommentar


                • #9
                  Naja es ist ein Datum also wäre [0-31],[0-12],[0-3000] oder sowas sinnvoller. Bei deinem Vorschlag aber bitte wenigstens die Strings richtig trennen.
                  Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                  Kommentar


                  • #10
                    Original geschrieben von tontechniker
                    Naja es ist ein Datum also wäre [0-31],[0-12],[0-3000] oder sowas sinnvoller.
                    im falle eines kalenderdatums hättest du recht.
                    aber datum ist lediglich der singular von daten

                    Original geschrieben von tontechniker
                    Bei deinem Vorschlag aber bitte wenigstens die Strings richtig trennen.
                    hast recht, asche auf mein haupt.
                    if(preg_match("/^{$num},{$num},{$num}$/",$datum))
                    macht den regex aber nicht einfacher, auch ".$num."-orgien nicht.

                    Kommentar


                    • #11
                      Hat funktioniert.

                      Vielen Dank!

                      Kommentar


                      • #12
                        aber datum ist lediglich der singular von daten
                        Bei $datum könnte man vermuten das ein Datum gemeint ist oder?
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          Original geschrieben von tontechniker
                          Bei $datum könnte man vermuten das ein Datum gemeint ist oder?
                          warum schreibst du im konjunktiv?
                          bei $datum kann man fast mit 99.9978%iger sicherheit davon ausgehen, dass datum gemeint ist. und datum ist der singular von daten

                          Kommentar

                          Lädt...
                          X