Saltar al contenido

Cómo comprobar que un string es un int, pero no un doble, etc.?

Sé libre de compartir nuestra web y códigos en tus redes, apóyanos para ampliar esta comunidad.

Solución:

¿Qué tal usar ctype_digit?

Del manual:


El ejemplo anterior dará como resultado:

The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.

Esto solo funcionará si su entrada es siempre una string:

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false

Si su entrada puede ser de tipo int, luego combina ctype_digit con is_int.

Si le preocupan los números negativos, deberá verificar la entrada para un -, y si es así, llama ctype_digit en un substr de la entrada string. Algo como esto lo haría:

function my_is_int($input) 
  if ($input[0] == '-') 
    return ctype_digit(substr($input, 1));
  
  return ctype_digit($input);

filter_var Deberías hacerlo:

var_dump(filter_var('2', FILTER_VALIDATE_INT));   // 2
var_dump(filter_var('2.0', FILTER_VALIDATE_INT)); // false
var_dump(filter_var('2.1', FILTER_VALIDATE_INT)); // false

pero

var_dump(filter_var(2, FILTER_VALIDATE_INT));     // 2
var_dump(filter_var(2.0, FILTER_VALIDATE_INT));   // 2
var_dump(filter_var(2.1, FILTER_VALIDATE_INT));   // false

Si solo quiere booleanos como valores de retorno, envuélvalo en una función, por ejemplo

function validatesAsInt($number)

    $number = filter_var($number, FILTER_VALIDATE_INT);
    return ($number !== FALSE);

+1 a la respuesta de Dominic (usando ctype_digit). Otra forma de hacerlo es con tipo coerción:

$inty = "2";
$inty2 = " 2";
$floaty = "2.1";
$floaty2 = "2.0";

is_int($inty + 0); // true
is_int($floaty + 0); // false
is_int($floaty2 + 0); // false

// here's difference between this and the ctype functions.
is_int($inty2 + 0);  // true
ctype_digit($inty2); // false

Comentarios y valoraciones del tutorial

Finalizando este artículo puedes encontrar las notas de otros desarrolladores, tú además eres capaz mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *