Hello
Petit souci un peu mystérieux, j'ai le code suivant, avec une fonction destinée à vérifier si le nombre est un entier :
Code :
- function is_entier($var)
- {
- if (!filter_var($var, FILTER_VALIDATE_INT))
- {
- return FALSE;
- }
- else
- {
- return TRUE;
- }
- }
- echo ($_POST['numero']);
- if (!is_entier($_POST['numero']))
- {
- echo "Ceci n'est pas un nombre entier";
- }
|
L'echo m'affiche un "0808080808" par exemple, mais la fonction me retourne false. J'ai du mal à le comprendre vu que plus haut dans le code, elle parvient à valider des superficies, des prix, etc., sans problème. Par contre quand j'effectue un :
Code :
- $numero=0808080808;
- $numero=intval($numero);
- if (!is_entier($numero))
- {
- echo "Ceci n'est pas un nombre entier";
- }
|
Ca fonctionne (à noter, sans le typage forcé, ça ne fonctionne de nouveau plus... alors que ça m'a validé auparavant des données issues d'un extract($_POST)).
Edit : je crois que je vais craquer Si je fais ça :
Code :
- $numero=9999999999;
- $superficie=99999999;
- if (!is_entier($superficie))
- {
- echo "La superficie n'est pas un nombre entier";
- }
- if (!is_entier($numero))
- {
- echo "Le numéro n'est pas un nombre entier";
- }
|
J'obtiens le message d'erreur dans le second cas, mais pas dans le premier.
Edit : j'ai trouvé, la variable est considérée comme un float à partir de 2^31.
Message édité par Yagmoth le 10-06-2009 à 10:22:17
---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !