php中的字符串到int转换
好的,我在尝试php中的字符串到int转换,php,string,validation,casting,Php,String,Validation,Casting,好的,我在尝试 验证用户输入是否为整数 当我试图将字符串12345A转换为int时,例如 $int_var = (int)'12345A'; 我得到12345 为什么PHP不抛出一个异常,但悄悄地忽略了“A”?当您进行这样的转换时,PHP将尽最大努力转换为数字,包括去掉非数字字符 如果要确保它是int,可以使用is_int(),如下所示: $t = '12345A'; if (!is_int($t)) throw new Exception('Not an integer: ' . $t);
验证用户输入是否为整数 当我试图将字符串
12345A
转换为int时,例如
$int_var = (int)'12345A';
我得到12345
为什么PHP不抛出一个异常,但悄悄地忽略了“A”?当您进行这样的转换时,PHP将尽最大努力转换为数字,包括去掉非数字字符 如果要确保它是int,可以使用
is_int()
,如下所示:
$t = '12345A';
if (!is_int($t)) throw new Exception('Not an integer: ' . $t);
将字符串的初始部分转换为整数类型:
该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将使用该值。否则,该值将为0(零)
如果要转换的变量是标量变量,则类型转换功能不应引发异常或以任何其他方式失败。如果变量是一个对象,它将触发一个通知,但仍将执行转换
如果要检查,如果$t
变量包含数值,请使用is\u numeric
:
if (is_numeric($t)) {
// ...
}
不要使用is_int
,因为如果$t
是一个类似'1234'
的字符串(通常是这种情况),那么is_int
将返回false
,因为类型是string
,而不是int
也要考虑<代码>修饰符< />代码>明文> $t/COD>检查前:
$t = trim($t);
因为用户可能会提交类似于
“123”
的内容。但是应用程序通常不应该仅仅因为前导空格而失败。因为这就是它的设计目的?所以我应该循环字符串并检查字符是否是一个数字吗?如果使用32位系统,并且需要一个大于PHP_MAX_int的大整数,则后者更好。您到底想做什么?读取类型杂耍:这将失败,因为$t不是整数,而是字符串。见公认的答案。