当值中有逗号时,有没有办法检查整数?

时间:2016-06-28 17:09:45

标签: php integer

存储在我的数据库表中的典型值如下:

 $value1 = "123,232,453";
 $value2 = "123,232,453.45";

逗号和小数。我必须检测数据上传后数据输入是否有任何错误。上传过程对我来说是一个黑盒子,很可能会有一个number_format。

我试过

  ctype_digit($value1)

要检查,但逗号没有任何帮助。

当值中有逗号时,有没有办法检查整数?

3 个答案:

答案 0 :(得分:2)

您可以通过将输入视为字符串来简单地删除逗号:

$value1 = str_replace(',', '', $value1);

然后您可以使用正则表达式检查整数:

if (preg_match('/^-?\d+$/', $value1)) {
    ...
}

或者,如果允许使用小数,则可以使用is_numeric()

if (is_numeric($value1)) {
    ...
}

答案 1 :(得分:0)

检查逗号:

if(strpos($value, ",")){
     // there is a comma
}else{
     // there is no comma
}

答案 2 :(得分:0)

使用更具功能性的风格并避免正则表达式可以这样做:

$values[] = "123,232,453";
$values[] = "123,232,453.45";
$values[] = "123,232,453.45b";

$result = array_map(
    function ($val) {
        return array_reduce(
            explode(",", $val),
            function ($carry, $item) {
                return $carry && filter_var($item, FILTER_VALIDATE_FLOAT) !== false;
            }, true
        );
    }, $values
);

var_dump($result);

这将在cli上输出以下内容。最后一个元素将为false,因为最后一个测试用例包含无效数字。

array(3) {
  [0] =>
  bool(true)
  [1] =>
  bool(true)
  [2] =>
  bool(false)
}

对于values中的所有项目,它会展开,处的项目,然后使用过滤器检查每个结果是否为有效的浮点数/数字。