24. juli 2006 - 14:20
Der er
16 kommentarer og 2 løsninger
Hvordan finder jeg ud af om url-variabel er integer?
Jeg har f.eks. query: ?var1=123&var2=abc Hvordan tester jeg i PHP om var1 er en integer i Z og ikke en string. Hvis jeg siger gettype får jeg string på både var1 og var2. Og benytter jeg typecast får jeg også var2 som integer. Mvh Lone
Annonceindlæg fra Barco
Slettet bruger
24. juli 2006 - 14:24
#1
is_numeric()
if (is_numeric($_GET['var1'])) { echo "yay"; } is_numeric() ser om argumentet indeholder en NUMERISK STRENG.
Slettet bruger
24. juli 2006 - 14:26
#4
Du har i nogen tilfælde også mulighed for at bruge is_int(), men fordi $_GET-variable altid er strenge, er is_numeric() eller en preg_match("/$[0-9]+^/", $_GET['var1']) de bedste muligheder. is_numeric er den hurtigste af de to.
Slettet bruger
24. juli 2006 - 14:26
#5
:)
Slettet bruger
24. juli 2006 - 14:27
#6
Jeg har ikke noget imod at dele points.
is_numeric() godkender også denne her "+0123.45e6". Det er faktisk et lovligt tal, men næppe lige det lone_a_p havde i tankerne.
Jeg vil derfor anbefale is_int() eller preg_match()-eksemplet.
Slettet bruger
24. juli 2006 - 14:34
#9
Hvis du skal bruge is_int skal du jo typecaste, og så skal du ud i noget: if(strlen((int)$_GET['var1']) == strlen($_GET['var1'])) { return true; } else { return false; }
24. juli 2006 - 14:34
#10
if("".intval($_GET['var1']) == $_GET['var1']) performer bedre end preg is_int kigger på variabaltypen. dvs den vil altid give false på en streng, uanset strengens indhold
Slettet bruger
24. juli 2006 - 14:34
#11
Hov.. der var jo slet ikke is_int i :)
24. juli 2006 - 14:36
#12
Det er fint nok med is_numeric ... havde glemt den eksisterede, for jeg har vist endda brugt den før :-D Tak for svarene :)
Slettet bruger
24. juli 2006 - 14:37
#13
Tak for points ;o)
Slettet bruger
24. juli 2006 - 14:37
#14
intval() og typecasting til integer er vel lige gode i den her sammenhæng?
24. juli 2006 - 14:41
#15
intval kender jeg ik Men typecasting dur ik ... kan ikke bruge "(int) abc" ... så vil abc blive opfattet som integer, men det er den jo ik :)
24. juli 2006 - 14:44
#16
men fint nok ... is_numeric virker til mit behov ;)
Slettet bruger
24. juli 2006 - 14:48
#17
if(strlen((int)$_GET['var1']) == strlen($_GET['var1'])) { return true; } else { return false; } Det er jo også typecasting :)
24. juli 2006 - 14:50
#18
Hvis du typecaster "abc" giver det blot 0. Om abc rent faktisk var en integer, kan du fange med if("0" == "abc") wicez, prøv at putte f.eks. "x" ind i var1, så går din kode i stykker
Vi tilbyder markedets bedste kurser inden for webudvikling