J'ai besoin de vérifier en PHP si l'utilisateur a saisi un nombre décimal (comme aux États-Unis, avec le point décimal : X.XXX).
Y a-t-il un moyen fiable de le faire ?
J'ai besoin de vérifier en PHP si l'utilisateur a saisi un nombre décimal (comme aux États-Unis, avec le point décimal : X.XXX).
Y a-t-il un moyen fiable de le faire ?
On m'a passé une chaîne de caractères, et je voulais savoir si c'était une décimale ou non. Je me suis retrouvé avec ça :
function isDecimal($value)
{
return ((float) $value !== floor($value));
}
J'ai effectué un certain nombre de tests en incluant des décimaux et des non-décimaux des deux côtés du zéro, et cela semble fonctionner.
is_numeric
renvoie à true
pour les décimales et les entiers. Ainsi, si votre utilisateur saisit paresseusement 1
au lieu de 1.00
il retournera toujours true
:
echo is_numeric(1); // true
echo is_numeric(1.00); // true
Vous pouvez convertir le nombre entier en décimal avec PHP, ou laisser votre base de données le faire pour vous.
J'utilise ça :
function is_decimal ($price){
$value= trim($price); // trim space keys
$value= is_numeric($value); // validate numeric and numeric string, e.g., 12.00, 1e00, 123; but not -123
$value= preg_match('/^\d$/', $value); // only allow any digit e.g., 0,1,2,3,4,5,6,7,8,9. This will eliminate the numeric string, e.g., 1e00
$value= round($value, 2); // to a specified number of decimal places.e.g., 1.12345=> 1.12
return $value;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Ce n'est pas une définition de fonction PHP.
0 votes
C'est du Actionscript, pas du PHP.
0 votes
Merci de l'avoir remarqué, la question a été modifiée. Désolé les gars, les nuits blanches m'ont fait trouver une fonction AS.
0 votes
Qu'est-ce qu'un nombre décimal à vos yeux ? Veuillez ajouter trois exemples à votre question. Puis, veuillez ajouter trois exemples de nombres non décimaux que vous attendez d'un utilisateur et que vous devez filtrer.
0 votes
Envisagez de regarder comment Zend a validé un float :
Zend_Validate_Float
0 votes
Gardez à l'esprit que lorsque vous utilisez, par exemple,
<input type="number" min="0.00" max="100.00" step="0.01"... />
En revanche, certains navigateurs utiliseront "1" comme valeur incrémentielle suivante après "0,99". Pour cette raison, il peut être utile de considérer la réponse de rybo111 : stackoverflow.com/a/20098294/1617737