可能重复:
检查变量是否为自然数
刚刚遇到我需要清理输入并使用 PHP 删除所有非数字字符的地方。想自己做一个函数,但只是首先想检查可能的内置函数,所以我不必花额外的时间重新发明轮子。
可能重复:
检查变量是否为自然数
刚刚遇到我需要清理输入并使用 PHP 删除所有非数字字符的地方。想自己做一个函数,但只是首先想检查可能的内置函数,所以我不必花额外的时间重新发明轮子。
在 PHP 中没有直接的等价物,pareseInt()
因为 PHP 没有NaN
数据类型。如果无法解析该值,parseInt()
将产生。NaN
此外,parseInt()
还有 radix 参数,PHP 选项都没有提供。
但是就是说,如果您只想将字符串转换为整数,那么有几种选择:
$int = (int)$string;
$int = intval($string);
$int = settype($string,'integer');
这三个都将以几乎相同的方式工作。可能存在一些与其他两种不同的边缘情况intval()
,但一般来说,它们会将字符串转换为 int。在没有 的情况下,如果字符串是非数字且无法解析NaN
,它们都会输出(零)。0
但这对于大多数数据库卫生目的来说应该足够了。
如果你真的想要一个NaN
on 错误,你会得到最接近的是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()
or preg_replace()
,但对于这种情况,这些绝对是矫枉过正。
您可以使用正则表达式如下
$int = (int) preg_replace('/\D/', '', $strNonNumeric);
或者
$int = (int) preg_replace('/[^0-9]/', '', $strNonNumeric);
您可以使用:
$string = "90"; //string
$myInt = (int) $string; //parse to int
我会推荐使用 FILTER_VALIDATE_INT 过滤器。
您也可以使用 sscanf (就像在 C 中一样)
<?php
$str = "10";
sscanf($str, "%d", $intVal);
$intVal *= 10;
echo $intVal;
?>
输出:
100