preg_match - wie auch negative Zahlen erlauben?

Registrierer

Erfahrenes Mitglied
Ich benutze folgenden Ausdruck:
PHP:
if (preg_match("=^[0-9]+$=i",$_POST["rabatt"][$_POST["save"]]))
um auf Zahlen zu prüfen.

Ich möchte aber auch negative Zahlen zulassen, da ist die Doku etwas dürftig.
Weiß jemand wie das geht?
 
Es gibt gefühlt unendlich viele Regexp Tutorials im Netz :-). Ich bin mir sicher, dass du dort etwas Ausführlicheres finden wirst.

Kurz zu meinem Ausdruck, der wie folgt in deinen Code eingebunden wird:
PHP:
if (preg_match("/^-?\d+$/",$_POST["rabatt"][$_POST["save"]]))
(Ich habe mal die = als Begrenzer des Ausdruckes durch einen Slash ersetzt)

^ bedeutet Anfang der Zeichenkette
- ist einfach ein Zeichen (Minus), nach dem Dach ^ muss also entweder ein Minus oder direkt eine Ziffer stehen
? bedeutet das Minus kann vorkommen, muss aber nicht, der Ausdruck greift also sowohl bei Vorzeichen als auch ohne
\d ist das gleiche wie 0-9 (nur Ziffern)
+ es muss mindestens eine Ziffer vorkommen, es können aber gern auch mehr sein
$ Ende der Zeichenkette, es können also nur Ziffern am Ende stehen

Grüße BN
 
@bn
Vielen Dank für diese ausführliche Erläuterung.
Funktioniert!

Ich hatte
PHP:
if (preg_match("=^-?[\d]+$",$_POST["rabatt"][$_POST["save"]]))
das lief leider nicht!

@rd4eva
Reguläre Ausdrücke! Natürlich... Danke.
 
Es gibt da übrigens Hilsmittel, die genau für soetwas gedacht sind :)

Code:
filter_var ($_POST["rabatt"][$_POST["save"]],FILTER_VALIDATE_INT)

Damit könntest du gleich noch den Wertebereich eingrenzen(falls mehr als 100%Rabatt unerwünscht sind :-))
 
Zurück