我想过滤并获取仅适用于浮点数的代码

时间:2019-02-28 13:10:42

标签: php filter floating-point

我在下面有此代码,我想知道为什么要在第一个“ if”中输入,例如,如果在$ temp变量中有一个数字,例如500、5、70等。我只想过滤FLOAT号码,就像过滤器说的那样

$temp = trim(htmlspecialchars(strip_tags($_REQUEST["temp"]), ENT_QUOTES, "UTF-8"));
$se = trim(htmlspecialchars(strip_tags($_REQUEST["select"]), ENT_QUOTES, "UTF-8"));

if (!empty($temp) && filter_var($temp, FILTER_VALIDATE_FLOAT)) {
   if ($se == "celsius" && $temp >= -273.15) {
         $result = round(32+(1.8*$temp), 2);
         echo "$temp ºC = $result ºF";
   } else if ($se == "fahrenheit" && $temp >= -459.67) {
        $result = round(($temp-32)/1.8, 2);
         echo "$temp ºF = $result ºC";
   } else {
        echo "El valor introducido no puede menor que -273,15 si es Celsius, o menor que -459,67 si
          es Fahrenheit";
   }
 } else {
      echo "Rellene el campo con un número decimal, por favor";
}

3 个答案:

答案 0 :(得分:1)

int实际上会将一个值从stringfloat转换为一个filter_var(400, FILTER_VALIDATE_FLOAT) filter_var('400', FILTER_VALIDATE_FLOAT) 数字。这意味着如果您致电:

400.0

这两个调用的结果都是浮点数if (is_numeric($temp) && strpos($temp, '.') !== false) { }

如果您实际上需要查看给定的数字是否有小数点分隔符,则可以像这样进行检查:

    const listItems = (
      <ul>
        {desclist.map((point, index) =>
        if (point.length < 2) {
            <li key={index}>
              <p>{point}</p>
            </li>
          )}
        }
      </ul>
    );

    return listItems;
  }

答案 1 :(得分:0)

我现在无法使过滤器正常工作,我不确定这种情况下的原因。

但是尝试使用PHP的is_float()函数

赞:

if (!empty($temp) && is_float($temp) {

答案 2 :(得分:0)

可能是由于混合数据类型。用var_dump检查以验证数据类型。 使用is_float()代替filter_var