Gå til innhold

[Løst] is_int gir feil boolean resultat


Anbefalte innlegg

Hei!

 

Jeg skal sjekke om en variabel er en "ren integer", men dette blir resultatet:

KODE:
$dato = $_POST['dato'];

echo $dato;
var_dump (is_int($dato));

RESULTAT:
19102013
boolean false

**************
Skifter jeg $dato til samme tallrekke:

KODE:
echo $dato;
var_dump (is_int(19102013));

RESULTAT:
19102013
boolean true

Litt bakgrunn:

På min input har jeg valgt type='text', da jeg trenger av og til å ha en bestemt verdi, før brukeren har rørt feltet. Dette støtter visst nok ikke type='date'...enda, hvis ingen har noen gode ideer til meg. På textfeltet har jeg skrevet, placeholder='dd.mm.åååå', men "stol aldri på brukeren" er noe jeg har i bakhodet... så derfor vil jeg bruke "is_int" for å gi en tilbakemelding til brukeren om at han/hun har skrevet feil type dato.

 

Beklager hvis det er tungvindt skrevet, men håper dere forstod litt av det.

Takker så mye for alle svar!

Lenke til kommentar
Videoannonse
Annonse

For alle som programmerer noe i PHP så anbefaler jeg virkelig å benytte seg av http://php.net

Dette er den offisielle dokumentasjonen av php, og den har en enkel søkefunksjon for å kunne slå opp hver eneste funksjon som finnes i PHP.

 

Om du slår opp funksjonen is_int() vil du se at det står: "To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric()." :-)

Lenke til kommentar

Hadde jeg skulle sjekket en dato som en bruker hadde skrevet inn tror jeg at jeg hadde gjort det noe slik som dette:

	if( isset( $_POST['date'] ) )
		$date = str_replace(".", "", trim( $_POST['date'] ) );
	else
		$date = "";
	
	if( strlen( $date ) == 8 AND checkdate( substr( $date, 2, 2 ), substr( $date, 0, 2 ), substr( $date, -4 ) ) )
		echo "Dette er en ekte dato";
	else
		echo "FEIL dato";

HEr bytter den ut hvis brukeren har brukt "." mellom tallen, feks 20.10.2002. Den sjekker om den har fått alle 8 tallene, også sjekkes det om denne datoen finnes.

Lenke til kommentar

Takk for gode svar! Det er jo selvfølgelig at en variabel leses alltid som en string, takk trondes, og for løsningsforslaget ditt! Og Thorbear, jeg leser alltid manualen, og var inne på is_int(), var slik jeg fant den funksjonen om å sjekke om det er korrekt input, men tydeligvis har jeg oversett det som kanskje står med størst skrift i manualen... :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...