controleren of inhoud een (komma)getal is
Ik vindt het juiste script niet om te kontroleren of een $var een (komma)getal is, kan iemand mij helpen?
is_float
Edit:
Waarom deze functie beter is dan gettype, zoals hieronder werd aangeraden:
Waarom deze functie beter is dan gettype, zoals hieronder werd aangeraden:
Quote:
For type checking, use is_* functions.
Gewijzigd op 26/12/2012 14:32:45 door Wouter J
.
Bedenk wel dat PHP een decimale punt gebruikt en geen komma.
Toevoeging op 26/12/2012 14:51:17:
Ik sluit me aan bij het advies van Wouter om is_float() te gebruiken. Maar kijk dan ook naar is_int() en is_numeric() omdat je vraagt om een test naar een (komma) getal. Daaruit begrijp ik dat het ook een integer zou kunnen zijn.
Het type van een variabele kun je bepalen met Bedenk wel dat PHP een decimale punt gebruikt en geen komma.
Toevoeging op 26/12/2012 14:51:17:
Ik sluit me aan bij het advies van Wouter om is_float() te gebruiken. Maar kijk dan ook naar is_int() en is_numeric() omdat je vraagt om een test naar een (komma) getal. Daaruit begrijp ik dat het ook een integer zou kunnen zijn.
Kan dit kloppen en hoe moet ik dit oplossen?
is_numeric gebruiken (zoals Ivo al aangaf). En mocht je een getal als 3.4E3 (wat 3400 betekend) niet willen toestaan kun je eens naar ctype_digit kijken.
Oh, je wilt weten of iets een getal is, het maakt niet uit wat? Dan kun je ja, maar bij numeric aanvaart hij geen komma getallen
Waar staat dat?
Oh? Quote:
Finds whether the given variable is numeric. Numeric strings consist of optional sign, any number of digits, optional decimal part and optional exponential part.
Gewijzigd op 26/12/2012 15:15:31 door Wouter J
Een 'komma' getal gaat waarschijnlijk inderdaad niet werken, omdat standaard php de Amerikaanse wijze aanhoudt. Het decimale scheidingsteken is standaard dus de punt en niet de komma in een float.
NumberFormatter, maar die is niet altijd geinstalleerd.
Een eenvoudiger methode is om de komma te vervangen door een punt. Maar dan ga ik ervan uit dat er geen punt wordt gebruikt als scheidingsteken voor de duizendtallen. Een voorbeeld met beperkte mogelijkheden is dus het volgende.
Dimi, als het getal in Nederlands formaat is (met komma i.p.v. punt) dan moet je dat eerst omzetten. Het mooist gaat dat met een Een eenvoudiger methode is om de komma te vervangen door een punt. Maar dan ga ik ervan uit dat er geen punt wordt gebruikt als scheidingsteken voor de duizendtallen. Een voorbeeld met beperkte mogelijkheden is dus het volgende.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$invoer = '1234,56';
$uitvoer = str_replace(',', '.', $invoer); //vervang komma door punt
if (is_numeric($uitvoer)) {
echo $uitvoer;
} else {
echo "$invoer is geen getal\n";
}
?>
$invoer = '1234,56';
$uitvoer = str_replace(',', '.', $invoer); //vervang komma door punt
if (is_numeric($uitvoer)) {
echo $uitvoer;
} else {
echo "$invoer is geen getal\n";
}
?>