Autor | Zpráva | ||
---|---|---|---|
MaxDJs Profil * |
#1 · Zasláno: 31. 10. 2010, 11:37:45
Bylo by možno ještě poradit, jak do skriptu správně zakomponovat regulární výraz pro libovolné číslo ereg("\d",$a) && ereg("\d",$b)? Chci zabezpečit aby šlo počítat, pouze když zadá uživatel číslo do obou polí. Zkoušel jsem to udělat ale teď mi to nepočítá ani když tam mám čísla. Viz.: http://moodle-test.g6.cz/kalkulacka.php
Zde je skript: <?php function mod($a, $b) { return ($a%$b + $b)%$b; } $a = $_POST['cislo_a']; $b = $_POST['cislo_b']; $operace = $_POST['operace']; if ($a == 0 && $b == 0): echo "Zadejte vstupní čísla pro početní operace"; endif; if(ereg("\d",$a) && ereg("\d",$b)): switch($operace): case "soucet": $vysledek = $a + $b; echo "$a + $b = $vysledek"; break; case "rozdil": $vysledek = $a - $b; echo "$a - $b = $vysledek"; break; case "soucin": $vysledek = $a * $b; echo "$a * $b = $vysledek"; break; case "podil": if ($b != 0): $vysledek = $a / $b; echo "$a / $b = $vysledek"; else: echo "Nelze dělit nulou. Zadejte číslo různé od nuly"; endif; break; case "modulo": if ($b != 0): $vysledek = mod($a, $b); echo "$a % $b = $vysledek"; else: echo "Nelze zjistit zbytek po celočíselném dělení s dělitelem, který je roven nule. Zadejte číslo různé od nuly"; endif; break; endswitch; else: echo "Zadal jste jiný znak než číslo. Zadejte číslo."; endif; ?> |
||
AM_ Profil |
#2 · Zasláno: 31. 10. 2010, 11:44:23
- funkce ereg() je zastaralá, používej preg_match
- nauč se odsazovat kód, v tomhle štrůdlu se nedá vyznat - ten regulár je špatně, tenhle matchne jakýkoli string obsahující alespoň jednu číslici. Navíc je špatně oescapovaný, nejsem si jistý, zda v uvozovkách "" nemá \d speciální význam, raději používej apostrofy. Správně by to mělo být nějak takhle: preg_match('~^\\d+$~', $cislo) proč to nepočítá netuším. |
||
Časová prodleva: 13 let
|
0