Intereting Posts
Как разбить строку из содержимого сетки и добавить элемент html Проблема с французскими ударными символами UTF-8 JSON-данные из iOS в PHP-скрипт Два разных макета для гостевого пользователя и вошли в систему User-Yii2 .htaccess переписать url с параметром get PHP Отправить письмо с вложением PDF без создания файла? API-интерфейс Google API с использованием метода CURL post Как вы скрываете URL-адрес файла .flv в flash-плеере? PHP Ratchet: класс Memcache не найден Перенос чистого PHP-проекта в структуру Yii Как сделать обратную ссылку на страницу разбиения на страницы вернуться к предыдущей странице разбиения на страницы Как я могу ответить на POST из приложения iPhone в PHP? DomPDF отлично не отображает таблицу Загрузите видеофайлы с помощью PHP и сохраните их в соответствующей папке и введите запись в базу данных синтаксический анализ андроида с использованием php genrated JSON

php filter var возвращает неверный результат

Я хотел использовать функцию php filer_var, но он возвращает неправильный результат, кажется, что он не учитывает диапазон:

$v = 54; $int_opts = array ( 'min_range' => 0, 'max_range' => 24 ); if ( filter_var($v, FILTER_VALIDATE_INT, $int_opts) ) echo 'an integer'; else echo 'not an integer'; 

Это не должно быть целым числом, так как 54 не находится между 0 и 24, но возвращает true и эхо-сигнал «целое число».

В чем проблема?

Благодарю.

В массиве «options» должен быть член с именем «options». Из руководства :

 $options = array( 'options' => array( 'default' => 3, // value to return if the filter fails // other options here 'min_range' => 0 ), 'flags' => FILTER_FLAG_ALLOW_OCTAL, ); 

вы не проходите это так, чтобы отображаемое поведение было в порядке.

 $options = array(); $options['options']['min_range'] = 0; $options['options']['max_range'] = 24; $options['flags'] = FILTER_FLAG_ALLOW_OCTAL; var_dump(filter_var(54, FILTER_VALIDATE_INT, $options)); //bool(false) var_dump(filter_var(21, FILTER_VALIDATE_INT, $options)); //int(21) 

Он работает таким образом.

О FILTER_FLAG_ALLOW_OCTAL :

Учитывает ввод, начинающийся с нуля (0), как восьмеричные числа. Это позволяет только следующим цифрам 0-7. Согласно этому:

 var_dump(filter_var(06, FILTER_VALIDATE_INT, $options)); //int(6) var_dump(filter_var(09, FILTER_VALIDATE_INT, $options)); //int(0) 

Версия 5.3.8 имеет фиксированную ошибку # 47745, которая означает, что FILTER_VALIDATE_INT не допускает минимальное целое число.

Файл, который вы хотите проверить, – ext / filter / logical_filters.c

 void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */ { ....