Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema validar nro entero

Estas en el tema de Problema validar nro entero en el foro de PHP en Foros del Web. Buenas tardes, tengo una duda. Cuando intento hacer esto: Código PHP:                         $nro  =  414332418888888888888888888888888 ;                         if ( filter_var ( $nro ,  FILTER_VALIDATE_INT ) ===  false ) {                             echo  ...
  #1 (permalink)  
Antiguo 04/03/2016, 14:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 84
Antigüedad: 14 años, 9 meses
Puntos: 1
Problema validar nro entero

Buenas tardes, tengo una duda.
Cuando intento hacer esto:

Código PHP:
                        $nro 414332418888888888888888888888888;


                        if (
filter_var($nroFILTER_VALIDATE_INT) === false) {
                            echo 
'entra';
                        } else {
                            echo 
'no entra';
                        } 
Ese número es entero, sin embargo lo valida como falso, como si no fuera entero...

Pero cuando el numero es mas corto lo valida bien, como por ejemplo si ingreso: 21321321

Alguien me sabe decir cual es el error?

Desde ya muchas gracias!
__________________
Arian
  #2 (permalink)  
Antiguo 04/03/2016, 14:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema validar nro entero

Si no me equivoco, PHP no puede manejar números de semejante rango.
Manual de referencia on line de PHP:
Cita:
Desbordamiento de enteros

Si PHP encuentra un número fuera de los límites de un integer, se interpretará en su lugar como un valor de tipo float. También, una operación cuyo resultado sea un número fuera de los límites de un integer devolverá en su lugar un valor de tipo float.

Ejemplo #2 Desbordamiento de enteros en sistemas de 32 bit

Código PHP:
<?php
$número_grande 
2147483647;
var_dump($número_grande);                    // int(2147483647)

$número_grande 2147483648;
var_dump($número_grande);                    // float(2147483648)

$millón 1000000;
$número_grande =  50000 $millón;
var_dump($número_grande);                    // float(50000000000)
?>
Ejemplo #3 Desbordamiento de enteros en sistemas de 64 bit
Código PHP:
<?php
$número_grande 
9223372036854775807;
var_dump($número_grande);                    // int(9223372036854775807)

$número_grande 9223372036854775808;
var_dump($número_grande);                    // float(9.2233720368548E+18)

$millón 1000000;
$número_grande =  50000000000000 $millón;
var_dump($número_grande);                    // float(5.0E+19)
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/03/2016, 15:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 84
Antigüedad: 14 años, 9 meses
Puntos: 1
Respuesta: Problema validar nro entero

Mil gracias gnzsoloyo. No estaba familiarizado con esto.
Gracias nuevamente!
__________________
Arian

Etiquetas: entero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:23.