PHP相当于JavaScript的parseInt函数?

2022-08-30 16:52:17

可能的重复:
检查变量是否为自然数

刚刚遇到我需要清理输入并使用PHP删除所有非数字字符的地方。我想过自己制作一个函数,但首先想检查一下可能的内置函数,这样我就不必花额外的时间来重新发明轮子了。


答案 1

在 PHP 中没有直接等效项,因为 PHP 没有数据类型。 如果无法解析值,将生成。pareseInt()NaNparseInt()NaN

此外,还具有基数参数,这是PHP选项中没有一个提供给您的。parseInt()

但话虽如此,如果您只想将字符串转换为整数,那么有几个选项:

$int = (int)$string;

$int = intval($string);

$int = settype($string,'integer');

这三者都将以大致相同的方式工作。可能有一些边缘情况与其他两种情况不同,但通常,它们会将字符串转换为int。在没有 的情况下,如果字符串是非数字且无法解析,它们都输出(零)。但对于大多数DB卫生目的来说,这应该足够了。intval()NaN0

如果您真的想要一个 on 错误,则最接近的方法是 。你可以得到这个使用:NaNnullfilter_var()

$value = filter_var(FALSE, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);

如果您只想检查字符串是否为数字,则该函数可以执行以下操作:is_numeric()

$bool = is_numeric($string);

但是,它对小数和科学记数法返回 true,因此对于大多数情况可能并不完美。更好的选择是,如果字符串仅由数字组成,则返回 true:ctype_digit()

$bool = ctype_digit($string);

如果非e适合,则始终存在正则表达式选项,使用or,但这些对于这种情况绝对是过度的。preg_match()preg_replace()


答案 2

您可以使用正则表达式,如下所示

$int = (int) preg_replace('/\D/', '', $strNonNumeric);

$int = (int) preg_replace('/[^0-9]/', '', $strNonNumeric);

推荐