indexOf und NaN in PHP?
hsr
- php
Hallo zusammen,
ich brauche so etwas wie
if ($var.indexOf(",") == 1)
{ $dau = "ja"; }
und
if (isNaN($var) == true)
{ $dau = "ja"; }
in PHP. Bin leider (in PHP) Anfaenger und bisherige Tipps an anderer Stelle waren zu "hoch" fuer mich.
Moechte die Usereingabe von Zahlen in einem input checken. Wer keine Zahlen oder "1,5" statt "1.5" angibt, soll ne Fehlermeldung erhalten.
Vielen Dank vorab.
hsr
Hi,
if ($var.indexOf(",") == 1)
{ $dau = "ja"; }
mit strpos, kannst Du zB. gucken, ob ein Komma enthalten ist.
http://de2.php.net/manual/de/function.strpos.php
if (isNaN($var) == true)
{ $dau = "ja"; }
meinst Du so etwas wie empty(), also nachschauen ob nichts drin steht?
dann: http://de2.php.net/manual/de/function.empty.php
generell würde ich Dir <www.php.net> ans Herz legen.
ciao
romy
Hi,
if ($var.indexOf(",") == 1)
{ $dau = "ja"; }
mit strpos, kannst Du zB. gucken, ob ein Komma enthalten ist.
http://de2.php.net/manual/de/function.strpos.phpif (isNaN($var) == true)
{ $dau = "ja"; }
meinst Du so etwas wie empty(), also nachschauen ob nichts drin steht?
dann: http://de2.php.net/manual/de/function.empty.php
Danke Euch beiden. Leider bin ich zu doof fuer diesen Buchstabensalat.
if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
{ die ("blabla"); }
funktioniert bestens. Angenommen werden nur ganze Zahlen zwischen 1 und 450, bei alle anderen Zeichen wird gemeckert.
Im zweiten Fall soll alles zwischen 0 und 4 erlaubt sein, auch Dezimalzahlen wie 1.3, aber bei Eingabe von "1,3" mit Komma statt Punkt sollte es auch die Fehlermeldung geben. Das kriege ich aber nicht gebacken leider.
Wer erbarmt sich (*nett guck)?
hsr
Hi,
if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
{ die ("blabla"); }
ich denke DU willst nur nach einem Komma suchen. Ein Komma ist in diesem Kontext doch immer falsch oder? Also benutze strpos(), was willst Du da mit preg_match?
FÜr bessere Hilfe nenne mal alle Kriterien, die erfüllt werden sollen.
ciao
romy
Hi Romy,
Du bist echt nett, vielen Dank. Warum ich was verwende, kann ich auch nicht so genau erklaeren, weil mir dazu die php-Grundlagen fehlen. Ich war auf dem preg_match-Trip, weil das bei der anderen Abfrage gut funktioniert hat.
Ich will einfach nur eine Formularfeldeingabe pruefen.
Eingegeben werden darf alles von 0 bis 4. Wird -5 oder 17 eingegeben, soll ein Fehler-Text erscheinen (das funzt). Erlaubt sind auch Dezimalzahlen wie 1.4. Gibt der User aber "1,4" ein (mit Komma statt Punkt), rechnet das Skript mit 1 statt "1.4". Das soll also unterbunden werden und bei Eingabe von Kommas oder Buchstaben eine Fehlermeldung erscheinen. Nun, mit strpos geht es schon besser:
// Wert muss zwischen 0 und 4 sein
if ($rzeit < 0 || $rzeit > 4)
{ die ("<b>Fehler:</b><br />blabla"); }
// kein Komma darf enthalten sein
$komma = strpos($rzeit,",");
if ($komma == "1")
{ die ("<b>Fehler:</b><br />blabla"); }
Ach ja, das Eingabefeld hat maxlength=3.
So scheint es nun zu funzen (ausser bei Eingabe ",5"), ich weiss nur nicht, ob das Zufall ist oder alles so passt. Besser waere es natuerlich noch, man wuerde nur Zahlen und Punkt erlauben und alles andere verbieten.
Viele Gruesse
hsr
Hi,
if ($v < 0 || $v > 450 || !preg_match("/^\d+$/",$v))
{ die ("blabla"); }
ich denke DU willst nur nach einem Komma suchen. Ein Komma ist in diesem Kontext doch immer falsch oder? Also benutze strpos(), was willst Du da mit preg_match?
FÜr bessere Hilfe nenne mal alle Kriterien, die erfüllt werden sollen.ciao
romy
Hi,
// kein Komma darf enthalten sein
$komma = strpos($rzeit,",");
if ($komma == "1")
{ die ("<b>Fehler:</b><br />blabla"); }
So scheint es nun zu funzen (ausser bei Eingabe ",5"), ich weiss nur nicht, ob das Zufall ist oder alles so passt.
strpos gibt die position des kommas zurück, also bei ,5 wäre das ja 0
besser wäre eine Abfrage al la
if(!(strpos($rzeit,",") === false)) // ja 3 = -Zeichen
Besser waere es natuerlich noch, man wuerde nur Zahlen und Punkt erlauben und alles andere verbieten.
dies geht allerdings nur effektiv mit reg. Ex. und preg_match
kann ich Dir nicht helfen, habe noch zu viele Probleme damit und will nichts falsches sagen
Du musst auch noch weiter denken, Eingaben wie zB. 95. dürfen auch nicht erlaubt sein, dass heisst, der Punkt darf nicht am Ende stehen.
zusammen sähe das dann so aus
if(($rzeit < 0 || $rzeit > 4) || (!(strpos($rzeit,",") === false)) || strpos($rzeit,".")==2) echo "fehler";
ciao
romy
Hi Romy aus L. an der P. (Lauf an der Pegnitz? - hm, stehe wohl gerade auf dem Schlauch),
nochmals vielen Dank fuer Deine Muehe. Werde das heute abend noch ausfuehrlich testen, sieht gut aus.
gtx,
hsr
Hi,
Hi Romy aus L. an der P. (Lauf an der Pegnitz? - hm, stehe wohl gerade auf dem Schlauch),
Leipzig an der Pleiße
;-)
ciao
romy
habe d'ehre
Moechte die Usereingabe von Zahlen in einem input checken. Wer keine Zahlen oder "1,5" statt "1.5" angibt, soll ne Fehlermeldung erhalten.
http://www.php-center.de/faq/faq-regexp.html#regexp-10