Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 12 Mayo 2021, 22:39 pm



Título: [Pregunta]: ¿Cómo saber si es un ENTERO o FLOTANTE en PHP?
Publicado por: Leguim en 12 Mayo 2021, 22:39 pm
Es algo trivial pero estoy teniendo problemas, no encuentro una función para saber si es ENTERO o FLOTANTE un número.
Estuve viendo pero no la encuentro, ya sé que existe is_int e is_float pero quiero que sea como is_numeric.

Quiero decir, is_numeric si le das como valor '3500' (cadena pero con numero dentro) devolverá true pero si pongo is_float('3500.78') esto me va a dar false porque no interpreta el numero que está en la cadena. Lo mismo pasa si fuera is_int('3500').

Pasa que como ya sabrán todo los datos que envía un formulario los devuelve en cadena.
¿No hay una función para eso?

EDIT:
Se me ocurrió algo "cutre" por así decirlo, y es que podría preguntar si dicha cadena tiene punto y si tiene punto quiere decir que en principio es un decimal entonces uso floatval('x');

IS_NUMERIC(x)
      TIENE_PUNTO(x)
             FLOATVAL(x)
      NO TIENE PUNTO
             INTVAL(x)

Por ahora tengo esto.


Título: Re: [Pregunta]: ¿Cómo saber si es un ENTERO o FLOTANTE en PHP?
Publicado por: WHK en 13 Mayo 2021, 00:11 am
Intenta hacer un doble cast y luego comprueba si es igual al input:

Código
  1. <?php
  2. $n = '123.456';
  3. if((string)(int)$n === (string)$n) {
  4.    echo 'Es entero.';
  5. } else {
  6.    echo 'No es entero.';
  7. }

Saludos.


Título: Re: [Pregunta]: ¿Cómo saber si es un ENTERO o FLOTANTE en PHP?
Publicado por: Danielㅤ en 13 Mayo 2021, 01:10 am
Hola, podes usar la función isdigit() :

https://www.geeksforgeeks.org/php-intlcharisdigit-function/


Saludos