我有一个来自数据库的字符串值。
我需要检查这个值是整数还是字符串。
我试过is_int
and is_numeric
,但它们都不是我需要的。
is_int
如果值是字符串类型,则始终返回 false,而is_numeric
如果我的值包含数字,则返回 true。
我正在使用的是preg_match('/^\d+$/',$value)
,并且,在这种情况下,我正在寻找一个简单的解决方案。
我有一个来自数据库的字符串值。
我需要检查这个值是整数还是字符串。
我试过is_int
and is_numeric
,但它们都不是我需要的。
is_int
如果值是字符串类型,则始终返回 false,而is_numeric
如果我的值包含数字,则返回 true。
我正在使用的是preg_match('/^\d+$/',$value)
,并且,在这种情况下,我正在寻找一个简单的解决方案。
$stringIsAnInteger = ctype_digit($string);
您可以使用ctype_digit()
— 检查数字字符。检查提供的字符串 text 中的所有字符是否都是数字。
示例 1
<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
if (ctype_digit($testcase)) {
echo "The string $testcase consists of all digits.\n";
} else {
echo "The string $testcase does not consist of all digits.\n";
}
}
?>
以上将输出
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.
示例 2
<?php
$numeric_string = '42';
$integer = 42;
ctype_digit($numeric_string); // true
ctype_digit($integer); // false (ASCII 42 is the * character)
is_numeric($numeric_string); // true
is_numeric($integer); // true
?>
我觉得你的方式是最好的。
我在一个简单的正则表达式中没有看到任何复杂的东西,所以,在你的位置我不会寻找更简单的。
说到复杂性,不要只局限于调用者代码。
它可以像单个函数调用一样短。但是你不能确定底层代码,它可能非常复杂,而且 - 一件重要的事情 - 有一些问题,就像这里命名的每个函数一样。
而您自己的解决方案既简单又强大。
更新:
所有说“不要使用正则表达式,其中简单的字符串函数可以用于性能等等”的所有评论都直接来自上个世纪。