RegEx, der nur auf Zahlen paßt
martin
- php
1 Dennis0 Bitte ein Bit
martin1 dedlfix
0 Marian
hallo alle zusammen,
ich schlage mir hier die ganze zeit mit eine RegEx rum,
der zu rein numerischen string passen soll - also paßt, wenn ein übergegener string _nur_ aus zahlen besteht.
// Validiert numerische Datenfelder
function CheckNumericalData ($argData,$argLabel,$argMinLength=1,$argMaxLength=10) {
$pattern="/[1]{".$argMinLength.",".$argMaxLength."}$/";
if(preg_match($pattern,$argData))
return 1;
else
return $argLabel;
} // function CheckNumData
ich kapier einfach nicht, wo hier das problem ist.
meine funktion liefert mir die ganze zeit $argLabel zurück statt ein TRUE.
kann mir da vielleicht jemand weiterhelfen?
die übergebenen werte sind völlig ok,
das passt alles !?
0-9 ↩︎
Hi martin,
ich schlage mir hier die ganze zeit mit eine RegEx rum,
der zu rein numerischen string passen soll - also paßt, wenn ein übergegener string _nur_ aus zahlen besteht.
Da bist du mit /[1]{1,10}$/ schon ganz richtig. Statt [0-9] könntest du aber auch \d verwenden.
$pattern="/[2]{".$argMinLength.",".$argMaxLength."}$/";
Hier solltest du mal noch zum Testen ein echo $pattern; oder so etwas einfügen um zu kontrollieren, ob der RegEx richtig zusammengeseztt wird.
ich kapier einfach nicht, wo hier das problem ist.
meine funktion liefert mir die ganze zeit $argLabel zurück statt ein TRUE.
Deine Funktion liefert auch nicht true sondern 1 zurück - wenn du mit dem === Operator arbeitest, ist das ein Unterschied.
kann mir da vielleicht jemand weiterhelfen?
PHP kennt für eine Überprüfung auf Zahlen die Funktion is_numeric().
MfG, Dennis.
AAAARGH!!!
mann, sowas dämliches.
mein regex und alles andere klappt wunderbar.
trotzdem vielen dank für deine hilfe...
ich fürchte nur, daß war nicht problem.
mein problem war die eigene blindheit.
ich übergebe eine Variable in einem Formular:
$_POST['bid'] => vom engl. "bid" wie "Gebot".
was verarbeite ich Volldepp weiter?
$_POST['bit'] => wie das "Bit" in der Bitburger Werbung.
Mann, ehrlich - das hat mich jetzt ne halbe stunde gekostet.
So ein Sch... ;-)
Grüße,
Martin
echo $begrüßung;
Mann, ehrlich - das hat mich jetzt ne halbe stunde gekostet.
Mit error_reporting = E_ALL wäre das nicht passiert.
echo "$verabschiedung $name";
if(preg_match($pattern,$argData))
return 1;
else
return $argLabel;
} // function CheckNumDatameine funktion liefert mir die ganze zeit $argLabel zurück statt ein TRUE.
ganz einfach: es 'matcht' nicht -> else wird ausgeführt.
echo mal das $pattern, vielleicht stimmt da was nicht
du kannst das aber auch ohne regex machen, zb:
function checkNumericalData(...)
{
if(!is_numeric($argData))
return false; //die funktion wird dann beendet
if($argData < $argMinLength or $argData < $argMaxLength)
return false;
return true; // wird nur aufgerufen wenn nicht vorher schon returnt wurde
}
Kleiner Tipp am Rande: du kannst statt
$pattern="/[1]{".$argMinLength.",".$argMaxLength."}$/";
auch einfach
$pattern="/[2]{$argMinLength,$argMaxLength}$/";
schreiben, das erkennt php automatisch (nur bei "-anführungszeichen, nicht bei ')