检查字符串是否包含整数
2022-08-30 11:58:57
您知道一个可以检查字符串是否包含整数的函数吗?
以下是我期望它的工作方式:
holds_int("23") // should return true.
holds_int("2.3") // should return false.
holds_int("qwe") // should return false.
您知道一个可以检查字符串是否包含整数的函数吗?
以下是我期望它的工作方式:
holds_int("23") // should return true.
holds_int("2.3") // should return false.
holds_int("qwe") // should return false.
if((string)(int)$var == $var) {
echo 'var is an integer or a string representation of an integer';
}
示例结果:
var_dump( test(1) ); // TRUE
var_dump( test('1') ); // TRUE
var_dump( test('1.0') ); // TRUE
var_dump( test('1.1') ); // false
var_dump( test('0xFF') ); // false
var_dump( test('0123') ); // TRUE
var_dump( test('01090') ); // TRUE
var_dump( test('-1000000') ); // TRUE
var_dump( test('+1000000') ); // TRUE
var_dump( test('2147483648') ); // false
var_dump( test('-2147483649') ); // false
请参阅下面的 Gordon 的回答,了解如果用于比较而不是 , 这将如何以不同的方式运行。===
==
不是最快的方法,但filter_var()
非常准确:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT) !== false;
}
以下是基于Jhong答案的结果,差异标记为:!!
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
要允许八进制整数:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL) !== false;
}
结果:
var_dump(test('0123') ); // true
var_dump(test('01090')); // false !!
要允许使用十六进制表示法:
function test($s)
{
return filter_var($s, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX) !== false;
}
结果:
var_dump(test('0xFF')); // true !!