No
el método más rápido, pero filter_var()
es bastante exacta:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT) !== false;
}
Éstos son los resultados basados en Jhong de answer, diferencias marcadas con !!
:
var_dump(test(1) ); // true
var_dump(test('1') ); // true
var_dump(test('1.0') ); // false !!
var_dump(test('1.1') ); // false
var_dump(test('0xFF') ); // false
var_dump(test('0123') ); // false !!
var_dump(test('01090') ); // false !!
var_dump(test('-1000000') ); // true
var_dump(test('+1000000') ); // true
var_dump(test('2147483648')); // true !! on 64bit
var_dump(test('-2147483649')); // true !! on 64bit
Para permitir números enteros octales:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL) !== false;
}
Resultados:
var_dump(test('0123')); // true
var_dump(test('01090')); // false !!
para permitir notación hexadecimal:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX) !== false;
}
Resultados:
var_dump(test('0xFF')); // true !!
* (relacionado) * [Compruebe si la cadena es una marca de tiempo Unix] (http://stackoverflow.com/questions/2524680/check-whether-the-string-is-a-unix-timestamp/2524761# 2524761) - la prueba es básicamente la misma – Gordon
¿Por qué es necesario? – mathk
@mathk: necesito validar la entrada del usuario. –