$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
Вход: 100.25
Выход: 10025
Как сохранить символ .
?
$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT);
Вход: 100.25
Выход: 10025
Как сохранить символ .
?
Попробуйте это...
$quantity = filter_input(
INPUT_GET,
'quantity',
FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION
);
Чтение документации http://www.php.net/manual/en/filter.filters.sanitize.php показывает, что FILTER_SANITIZE_NUMBER_FLOAT
имеет следующий эффект:
Удалите все символы, кроме цифр, + - и опционально., eE.
Превращение этого довольно плохо сформированного предложения вокруг:
Это удаляет все символы из ввода, кроме цифр (0-9). С дополнительными флагами можно также разрешить символы. (точка), (запятая) e (показатель степени) и E (показатель)
Итак, ваш пример кода не умножается, но он лишает десятичную точку.
Решение
Вам нужно установить опцию FILTER_FLAG_ALLOW_FRACTION
в вызове функции, чтобы разрешить десятичную точку:
$quantity = filter_input(INPUT_GET, 'quantity', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
Вы хотите:
$quantity = filter_var(100.25, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
print_r($quantity);
Woops.. Вы хотите использовать filter_input
, как вы сейчас, а также те же первые два аргумента. Я закончил использование filter_var
, чтобы проверить его в кодексе и забыл изменить его: P
В качестве альтернативы используйте FILTER_VALIDATE_FLOAT
, с примечанием обратной обратной связи, если оно не соответствует:
$quantity = (filter_input(INPUT_GET, 'quantity', FILTER_VALIDATE_FLOAT))
?filter_input(INPUT_GET, 'quantity', FILTER_VALIDATE_FLOAT):
"Invalid Decimal Number";
print_r($quantity);