FILTER_VALIDATE_INT всегда возвращает false

Я пытаюсь проверить целое число с помощью FILTER_VALIDATE_INT, он работает нормально на сервере Ubuntu, но возвращает false в моей локальной системе win 10 xampp.

вот код

Случай 1:

$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));

OP: bool (false)

случай 2:

$d = "9876543210";
var_dump(filter_var($d, FILTER_VALIDATE_INT));

OP: bool (false)

случай 3:

var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));

OP: bool (false)

На сервере:

var_dump(filter_var(9876543210, FILTER_VALIDATE_INT));

OP: int (9876543210)

-1

Решение

Вы используете 32-битную Windows или 32-битный PHP на 64-битных окнах и 64-битный сервер?

Я думаю, что вы, вероятно, Если вы запустите это, вы получите правильные результаты. Ваши номера были больше, чем PHP_INT_MAX для 32-битной системы

echo PHP_INT_MAX;

$d = "sdaf";
var_dump(filter_var($d, FILTER_VALIDATE_INT));

$d = PHP_INT_MAX;
var_dump(filter_var($d, FILTER_VALIDATE_INT));

var_dump(filter_var(PHP_INT_MAX, FILTER_VALIDATE_INT));

РЕЗУЛЬТАТЫ:

2147483647

bool(false)

int(2147483647)

int(2147483647)
2

Другие решения

В PHP вы можете иметь 32-битные и 64-битные целые числа.
Максимальное 32-битное целое число, которое вы можете иметь, это 2147483647меньше твоего 9876543210,

Если у вас есть число, которое больше этого, оно преобразуется в число с плавающей точкой, поэтому проверка int завершается неудачно.

Если вы не хотите этого, вам нужна 64-битная версия PHP.
И если у вас есть окна, это должен быть PHP 7 или выше.
Зачем? 64-битные версии PHP 5. * имеют ошибку, что целые числа всегда 32-битные.

Больше информации: https://secure.php.net/manual/en/language.types.integer.php

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector