Autor | Zpráva | ||
---|---|---|---|
Tomasekkk Profil * |
#1 · Zasláno: 5. 3. 2011, 19:33:26
Zdravím Vás, potřebuji do podmínky udělat ověření čísla, které může být max. 4 místné, nesmí zde být žádný jiný znak než číslo (tzn. žádné - + . / apod.), přes is_numeric mi to nejde, protože bere i desetinné číslo, jedná se o celá čísla. Lze to řešit nějak jednoduše?
|
||
panther Profil |
#2 · Zasláno: 5. 3. 2011, 19:36:37
|
||
Tomasekkk Profil * |
#3 · Zasláno: 5. 3. 2011, 19:42:56
Zvláštní, is_int() mi nejde, is_numeric ano (ale zase jdou i desetinná čísla) ... přemýšlel jsem také, zda-li by to nešlo přes eregi()
|
||
Tomasekkk Profil * |
#4 · Zasláno: 5. 3. 2011, 19:46:26
nebo tedy preg_match, ale raději si nechám poradit.
|
||
panther Profil |
#5 · Zasláno: 5. 3. 2011, 19:48:05
Tomasekkk:
jak se projevuje to, že to nejde? Pozor, $var = "23" není integer, ale string (více v example #1 na odkázané stránce).
|
||
Tomasekkk Profil * |
#6 · Zasláno: 5. 3. 2011, 19:52:57
aha, no to je to jasné, hodnotu přebírám přes
$cislo = addslashes($_POST["id"]); a podmínka if (!is_int($cislo)) { } prostě propustí tak jako když by tato podmínka byla splněna, přitom přes POST jde jen číslo 5 |
||
pcmanik Profil |
#7 · Zasláno: 5. 3. 2011, 19:54:56
skus intval, to ti oreze vsetko a necha len cele cisla
|
||
Tori Profil |
#8 · Zasláno: 5. 3. 2011, 19:56:18 · Upravil/a: Tori
Tomasekkk:
Tak místo addslashes() filtrujte vstup pomocí intval, a pak stačí už jen kontrolovat délku. edit: Pozdě. |
||
Tomasekkk Profil * |
#9 · Zasláno: 5. 3. 2011, 19:57:04
Ale to mi zase bude brát znaménka jako - + apod. :-(
|
||
pcmanik Profil |
#10 · Zasláno: 5. 3. 2011, 20:03:06
Tak si pozri funkciu
settype |
||
Tomasekkk Profil * |
#11 · Zasláno: 5. 3. 2011, 20:20:38
No spíš jsem si říkal, že se to dá dělat jednodušeji, ale jak vidím v podmínce bude pár dalších funkcí, tak si myslím, že asi nejlepší bude tedy preg_match ... Nešlo mi spíš o to dostat se k nějakému výsledku, ale spíš mě zajímalo jak by jste to řešili vy.
|
||
Tomasekkk Profil * |
#12 · Zasláno: 5. 3. 2011, 20:33:05
Zatím jsem to vyřešil takto jak jsem měl na mysli ještě před tím než jsem psal tento dotaz a jak to používám - myslím si tedy, že takto u toho zůstanu a délku budu ověřovat pouze přes strlen
if (!preg_match( '/^\d*$/' , $cislo)) {} |
||
Tori Profil |
#13 · Zasláno: 5. 3. 2011, 20:33:18 · Upravil/a: Tori
Tomasekkk:
„spíš mě zajímalo jak by jste to řešili vy.“ Asi bych to brala podle toho, co se má stát v případě záporného čísla. Určitě přefiltrovat vstup přes intval, a pak: a) pokud budu striktní a záporné číslo = chyba, tak ověřit (if $x < 0) b) pokud chci akceptovat i překlepy uživatele, tak funkcí abs převést vstup na kladné číslo ... a následuje kontrola délky. pcmanik: > Tak si pozri funkciu settype No ale ta taky nepřevede záporná čísla na kladná. edit: Tomasekkk: ↑ Aha, nepochopila jsem, že to je ověření vstupu - myslela jsem, že filtr. Potom můžete rovnou do reguláru přidat i počet číslic: preg_match( '/^\d{1,4}$/', $cislo) |
||
Tomasekkk Profil * |
#14 · Zasláno: 5. 3. 2011, 20:43:58
Moc děkuji, o počtu číslic v regulátoru vím, právě proto jsem jen psal, zda-li má někdo něco jiného jak by toto řešil, já takové věci používám pár let a nesleduju kde vývoj PHP jde, proto jsem napsal ať se přiučím něco jiného ;o) Moc děkuju
|
||
Časová prodleva: 13 let
|
0