可能重复:
Check if a variable is a natural numberPHP的等价JavaScript的parseInt函数?
对面,我需要清理的输入,并用PHP删除所有非数字字符刚刚来到。想到自己做一个功能,但是首先想要检查可能的内置功能,所以我不必花费额外的时间来重新发明轮子。
可能重复:
Check if a variable is a natural numberPHP的等价JavaScript的parseInt函数?
对面,我需要清理的输入,并用PHP删除所有非数字字符刚刚来到。想到自己做一个功能,但是首先想要检查可能的内置功能,所以我不必花费额外的时间来重新发明轮子。
您可以使用:
$string = "90"; //string
$myInt = (int) $string; //parse to int
对不起,但那不完全是我想要的。 '(int)'不会删除所有的非数字字符,如果字符串中有非数字字符,它将返回'0'。 – think123
@ think123:在javascript中,类型转换'(int)'和'parseInt()'的作用相同。这是你问的,不是吗? –
您还可以使用sscanf的(就像在C做)
<?php
$str = "10";
sscanf($str, "%d", $intVal);
$intVal *= 10;
echo $intVal;
?>
输出:
我会建议使用FILTER_VALIDATE_INT过滤器。
没有直接等同于pareseInt()
在PHP因为PHP没有NaN
数据类型。如果该值无法解析,parseInt()
将产生NaN
。
另外,parseInt()
有基数参数,这些PHP选项都不给你。
虽如此,但如果你想要做的是把一个字符串转换成整数,那么有几种选择:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
这三个将在大致相同的方式工作的。可能存在一些边界情况,其中intval()
与其他两个不同,但通常它们会将字符串转换为int。在没有NaN
的情况下,如果字符串是非数字并且不能被分析,则它们全部输出0
(零)。但是这对于大多数DB卫生目的应该是足够的。
如果你真的想要一个在NaN
上的错误,你会得到最接近的是null
。您可以使用filter_var()
得到这样的:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
如果你只是想检查该字符串的数字,该is_numeric()
功能可以做到这一点:
$bool = is_numeric($string);
然而,返回小数真实,也为科学记数法,因此在大多数情况下可能并不完美。更好的选择是ctype_digit()
如果字符串仅由数字返回true:
$bool = ctype_digit($string);
如果这个套装的非E,总有正则表达式的选项,使用preg_match()
或preg_replace()
,但这些肯定是矫枉过正这种情况。
检查[php.net/Type Casting](http://php.net/manual/en/language.types.type-juggling.php) – air4x
为什么不只是使用intval? – endy