PHP相当于JavaScript的parseInt函数?

时间:2012-09-29 07:25:22

标签: php function digit

  

可能重复:
  Check if a variable is a natural number

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

5 个答案:

答案 0 :(得分:28)

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

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

OR

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

答案 1 :(得分:25)

PHP中没有与pareseInt()直接等价的原因,因为PHP没有NaN数据类型。如果无法解析值,parseInt()将生成NaN

此外,parseInt()具有radix参数,没有任何PHP选项可供您使用。

但是,如果您想要做的就是将字符串转换为整数,那么有几种选择:

$int = (int)$string;

$int = intval($string);

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

这三个人的工作方式大致相同。可能存在intval()与其他两个不同的边缘情况,但一般来说,它们会将字符串转换为int。如果没有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()使用正则表达式选项,但这些对于这种情况来说肯定是过度的。

答案 2 :(得分:5)

您可以使用:

$string = "90"; //string
$myInt = (int) $string; //parse to int

答案 3 :(得分:3)

我建议使用FILTER_VALIDATE_INT过滤器。

about Filters on php.net

答案 4 :(得分:0)

您也可以使用sscanf(就像在C中一样)

<?php

    $str = "10";

    sscanf($str, "%d", $intVal);
    $intVal *= 10;

    echo $intVal;
?>

<强>输出:

100