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 ?
Si vous travaillez avec la validation des formulaires. Dans ce cas, le formulaire envoie une chaîne de caractères. J'ai utilisé le code suivant pour vérifier si l'entrée du formulaire est un nombre décimal ou non. J'espère que cela fonctionnera pour vous aussi.
function is_decimal($input = '') {
$alphabets = str_split($input);
$find = array('0','1','2','3','4','5','6','7','8','9','.'); // Please note: All intiger numbers are decimal. If you want to check numbers without point "." then you can remove '.' from array.
foreach ($alphabets as $key => $alphabet) {
if (!in_array($alphabet, $find)) {
return false;
}
}
// Check if user has enter "." point more then once.
if (substr_count($input, ".") > 1) {
return false;
}
return true;
}
function is_decimal_value( $a ) {
$d=0; $i=0;
$b= str_split(trim($a.""));
foreach ( $b as $c ) {
if ( $i==0 && strpos($c,"-") ) continue;
$i++;
if ( is_numeric($c) ) continue;
if ( stripos($c,".") === 0 ) {
$d++;
if ( $d > 1 ) return FALSE;
else continue;
} else
return FALSE;
}
return TRUE;
}
Problèmes connus avec la fonction ci-dessus :
1) Ne prend pas en charge la "notation scientifique" (1.23E-123), l'impôt ($ en tête ou autre) ou le "f de fin". (flottants de style C++) ou la "devise de queue" (USD, GBP, etc.).
2) Faux positif sur les noms de fichiers de chaîne qui correspondent à une décimale : Veuillez noter que, par exemple, "10.0" en tant que nom de fichier ne peut pas être distingué de la décimale, donc si vous essayez de détecter un type à partir d'une chaîne seule, et qu'un nom de fichier correspond à un nom décimal et n'a pas de chemin inclus, il sera impossible de le discerner.
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