Целочисленный фильтр с JInput

Я получаю значение из JInput, которое должно быть целым числом.

$input = new JInput();
$post = $input->getArray($_POST);
$value= $input->$post['value'];

Теперь, очевидно, я не могу использовать is_int(), потому что $_POST делает значение строкой - обычно решается с помощью filter_input(). Это оставляет меня в небольшой проблеме - поскольку я хочу отклонить все, что не является целым числом, а не преобразовывать его в целое число. Используя что-то вроде

$value=JFactory::getApplication()->input->get('value', '0', 'INT');

заставляет строку быть целым числом. (например, ввод 1.2 даст значение $1 и т. д.). Итак, я застрял в том, как добиться этого фильтра. В идеале я хотел бы сделать что-то вроде

if(is_int($delete)) {
    //Carry on processing data
} else {
    //Stop function and display a JError
JLog::add("Value is not a integer", JLog::WARNING, 'jerror');
}

person George Wilson    schedule 27.01.2013    source источник


Ответы (2)


Почему бы не использовать:

$input = new JInput;
$value = $input->getInt('value');
person Mike    schedule 27.01.2013
comment
Это по-прежнему округляет значения - например. ввод 1.2/1.4 даст $value=1. Я уже могу это сделать, как я сказал в вопросе. Я просто хочу проверить, является ли введенное значение int, а не пытаться округлить значения вниз - person George Wilson; 28.01.2013

Наконец, нашел его на SO в разделе проверить целочисленные значения или значения с плавающей запятой.

Окончательный использованный код:

$input = new JInput();
$post = $input->getArray($_POST);
$value= $input->$post['value'];
//checks value is numeric and if it is a int
if(is_numeric($value) && (int) $value == $value) {
    //process data
} else {
    JLog::add("Value is not a integer", JLog::WARNING, 'jerror');
}
person George Wilson    schedule 27.01.2013