Jens Marder: preg_match syntax

Frohes Fest allerseits,

mein Problem ist folgendes(php.net bringt mich dabei nicht weiter):
Bei

$tmp = preg_match("/\d/",$data);

ist $tmp leider auch true, wenn $data 2a ist.
Wie muss ich die Syntax verändern, damit ausschließlich 0-9 und . angenommen werden ?

mfg

  1. Probier mal folgendes:

    preg_match("/[.0-9]/",$data)

    oder

    preg_match("/[0-9]|./",$data)

    1. Gibt bei mir leider immer noch $tmp = true aus, bei der Eingabe von 2a..
      Ist das auch nicht richtig, oder liegt der Fehler woanders? - PHP-Einstellungen etc.?

      mfg

  2. Hallo Jens,

    $tmp = preg_match("/\d/",$data);

    damit muss irgendwo im String eine Zahl vorkommen, damit $tmp true ist - du musst den Ausdruck am Anfang und am Ende des zu prüfenden Strings "verankern":

    $tmp = preg_match("/^\d$/",$data);

    siehe auch http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#zeichenketten (vorletzer Absatz) - um allerdings den Punkt auch noch mit zu akzeptieren würde ich die Zeichenklasse [.0-9] verwenden (wobei ich mir nicht sicher bin, ob der Punkt maskiert werden muss oder nicht).

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Super, nachdem es ewig gedauert hat zu senden, sehe ich, dass es inzwischen eine andere Antwort gibt (die mir auch weitergeholfen hat
      :) ).

      Ich bedanke mich vielmals (und lese mir den link nochmal durch),

      mfg.