Avatar billede lone_a_p Praktikant
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
Avatar billede Slettet bruger
24. juli 2006 - 14:24 #1
is_numeric()
Avatar billede gizmo-gizmo Nybegynder
24. juli 2006 - 14:24 #2
if (is_numeric($_GET['var1']))
{
  echo "yay";
}


is_numeric() ser om argumentet indeholder en NUMERISK STRENG.
Avatar billede gizmo-gizmo Nybegynder
24. juli 2006 - 14:25 #3
bahh ;)
Avatar billede 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.
Avatar billede Slettet bruger
24. juli 2006 - 14:26 #5
:)
Avatar billede Slettet bruger
24. juli 2006 - 14:27 #6
Jeg har ikke noget imod at dele points.
Avatar billede nielle Nybegynder
24. juli 2006 - 14:28 #7
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.
Avatar billede nielle Nybegynder
24. juli 2006 - 14:30 #8
Jeg vil derfor anbefale is_int() eller preg_match()-eksemplet.
Avatar billede 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;
}
Avatar billede plx Nybegynder
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
Avatar billede Slettet bruger
24. juli 2006 - 14:34 #11
Hov.. der var jo slet ikke is_int i :)
Avatar billede lone_a_p Praktikant
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 :)
Avatar billede Slettet bruger
24. juli 2006 - 14:37 #13
Tak for points ;o)
Avatar billede Slettet bruger
24. juli 2006 - 14:37 #14
intval() og typecasting til integer er vel lige gode i den her sammenhæng?
Avatar billede lone_a_p Praktikant
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 :)
Avatar billede lone_a_p Praktikant
24. juli 2006 - 14:44 #16
men fint nok ... is_numeric virker til mit behov ;)
Avatar billede 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 :)
Avatar billede plx Nybegynder
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester