首页 > 解决方案 > preg_grep 不返回正确的结果

问题描述

以下代码未捕获 45.00 作为结果:

$array = array(50,45.00,34,56,6.67);
$fl_array = preg_grep("/^(\d+)?\.(\d)+$/", $array);

有什么建议吗?

标签: phppreg-grep

解决方案


如果你这样做,var_dump($array);你会得到:

array(5) {
  [0]=> int(50)
  [1]=> float(45)
  [2]=> int(34)
  [3]=> int(56)
  [4]=> float(6.67)
}

PHP 你转换45.0045. 这就是为什么您无法使用正则表达式找到的原因。

你可以做的是只插入字符串。

$array = array("50","45.00","34","56","6.67");

然后它会工作。

另一种选择是仅从数组中过滤浮点数:

$array = array(50,45.00,34,56,6.67);
$fl_array = array_filter($array, function($item) {
    return is_float($item);
});

推荐阅读