Guía y comprobaciones
Convertir un valor conocido
Un cast (int) cambia la representación a entero. Es adecuado cuando ya conoces el significado y formato del dato; no demuestra que una entrada externa sea un número entero bien escrito. Una cadena con texto después de un prefijo numérico puede producir un entero y ocultar el error de origen.
echo (int) '42', PHP_EOL; // 42
echo (int) '42 cajas', PHP_EOL; // 42
echo (int) 'cajas', PHP_EOL; // 0
Si cajas termina convertido en cero y cero es una cantidad permitida, ya no puedes distinguir una entrada inválida de una cantidad real. Decide si quieres una conversión tolerante o una validación estricta antes de elegir una función.
Validar el entero y su rango
Para aceptar un entero dentro de un intervalo, FILTER_VALIDATE_INT permite expresar la regla. Comprueba su resultado con === false, ya que el entero cero también es un resultado válido.
$entrada = '0';
$numero = filter_var($entrada, FILTER_VALIDATE_INT, [
'options' => ['min_range' => 0, 'max_range' => 100],
]);
echo $numero === false ? 'Inválido' : 'Válido: '.$numero;
echo PHP_EOL; // Válido: 0
Los decimales con coma, separadores de miles y ceros iniciales requieren una política explícita. No elimines todos los caracteres no numéricos: convertir -12 en 12 o 1,5 en 15 cambia el dato. Si tu formulario maneja dinero, utiliza una representación decimal apropiada y no este ejemplo de cantidades enteras.
Límites del entorno
El tamaño de los enteros depende de la plataforma PHP. Identificadores largos, números de documento y códigos con ceros iniciales suelen ser cadenas, aunque contengan sólo dígitos. Un teléfono tampoco se vuelve más útil al convertirlo a entero. Conserva el formato cuando el dato identifica algo y no se utiliza para hacer aritmética.
Anota una pequeña tabla para el campo concreto: cero permitido, cantidad máxima, signo negativo y texto mezclado. El mensaje de error debe indicar la regla que incumple la entrada, sin mostrar información interna del servidor.
Preguntas frecuentes
¿intval valida que todo el texto sea un entero?
No. Convierte el valor según las reglas de PHP; una validación debe comprobar el formato y los límites que necesitas.
¿Por qué falla if (!$numero) con cero?
Porque cero se evalúa como falso. Para distinguir un error de FILTER_VALIDATE_INT utiliza === false.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.