Я хочу отфильтровать и получить код, работающий только с номерами с плавающей точкой - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть этот код ниже, и я хочу знать, почему вводится в первом «если», если, например, в переменной $ 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 голосов
/ 28 февраля 2019

может быть из-за смешанного типа данных.Проверьте с помощью var_dump, чтобы проверить тип данных.Используйте is_float() вместо filter_var

0 голосов
/ 28 февраля 2019

filter_var фактически превратит значение из int, string в float число.Это означает, что если вы позвоните:

filter_var(400, FILTER_VALIDATE_FLOAT)
filter_var('400', FILTER_VALIDATE_FLOAT)

, результатом обоих вызовов будет число с плавающей запятой 400.0.

Если вам действительно нужно посмотреть, есть ли у данного числа десятичный разделительВы можете проверить это как:

if (is_numeric($temp) && strpos($temp, '.') !== false) {

}
0 голосов
/ 28 февраля 2019

Я не могу заставить фильтр работать тоже сейчас, я не уверен в причине в этом случае.

Но попробуйте использовать is_float() функцию PHP

Вот так:

if (!empty($temp) && is_float($temp) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...