可能是重复问题:
检查一个变量是否为自然数
我刚刚碰到一个需要用PHP对输入进行清理并删除所有非数字字符的情况。想着自己编写一个函数,但首先想要查看可能存在的内置函数,这样就不必花费额外的时间重新发明轮子了。
可能是重复问题:
检查一个变量是否为自然数
我刚刚碰到一个需要用PHP对输入进行清理并删除所有非数字字符的情况。想着自己编写一个函数,但首先想要查看可能存在的内置函数,这样就不必花费额外的时间重新发明轮子了。
PHP中没有直接等效于parseint()
的功能,因为PHP没有NaN
数据类型。如果值无法解析,parseInt()
将生成NaN
。
此外,parseInt()
具有基数参数,而PHP选项中没有任何基数参数可用。
但是,如果你只想将字符串转换为整数,那么有几个选项:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
这三个函数的工作方式基本相同。可能存在一些特殊情况,intval()
与其他两个函数不同,但通常它们都可以将一个字符串转换为整数。在没有 NaN
的情况下,如果字符串非数字且无法解析,则它们都会输出 0
(零)。但对于大多数数据库清理目的来说,这应该已经足够了。
如果你确实想获取错误时的NaN
,那么最接近的是使用null
。你可以使用filter_var()
来获得它:
$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);
如果您只想检查字符串是否为数字,那么可以使用is_numeric()
函数:$bool = is_numeric($string);
但是,它会对十进制数和科学计数法返回true,因此在大多数情况下可能并不完美。更好的选择是ctype_digit()
,如果字符串仅由数字组成,则返回true:
$bool = ctype_digit($string);
如果以上方法都不适用,总还有正则表达式选项,使用 preg_match()
或者 preg_replace()
,但是这些方法对于这种场景来说绝对过于复杂。
您可以按照以下正则表达式进行操作。
$int = (int) preg_replace('/\D/', '', $strNonNumeric);
或者
$int = (int) preg_replace('/[^0-9]/', '', $strNonNumeric);
您可以使用:
$string = "90"; //string
$myInt = (int) $string; //parse to int
(int)
不会移除所有非数字字符,它只会在字符串中存在任何非数字字符时返回 0
。 - Lucas(int)
类型转换与 JavaScript 中的 parseInt()
功能相同。这就是你所问的,对吗? - Glavićphp.net
的链接,我会把你的投票还给你。 - Lucas你也可以使用 sscanf(就像在 C 中一样)
<?php
$str = "10";
sscanf($str, "%d", $intVal);
$intVal *= 10;
echo $intVal;
?>
输出:
100