$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 );
CodePad .
Чтение документации http://www.php.net/manual/en/filter.filters.sanitize.php показывает, что FILTER_SANITIZE_NUMBER_FLOAT
имеет следующий эффект:
Удалите все символы, кроме цифр, + – и опционально., EE.
Превращение этого довольно плохо сформулированного предложения вокруг:
Это удаляет все символы с ввода, кроме цифр (0-9). С дополнительными флагами можно также разрешить символы. (точка), (запятая) e (показатель степени) и E (показатель степени)
Таким образом, ваш пример кода не умножается, но он лишает десятичную точку.
Решение :
Вам нужно установить в FILTER_FLAG_ALLOW_FRACTION
функции 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
с 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);