Я хочу отфильтровать вводимые пользователем десятичные значения и разрешить запятые и точки.
Я использую следующий кусок кода для достижения этой цели:
$user_input = round(filter_input(INPUT_POST, 'test', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION|FILTER_FLAG_ALLOW_THOUSAND),2);
С первым фильтром все работает нормально, если я ввожу десятичные значения с точками, но если я ввожу десятичное значение с запятыми, функция удаляет запятую и десятичную часть тоже.
Может ли кто-нибудь помочь мне? Спасибо
Для этого вы можете использовать регулярные выражения, например:
preg_match_all('/^(\d+(?:[\.\,]\d{1,})?)$/', $input, $output);
В переменной $ output вы получите результаты. Если вывод неправильный, вы просто получите пустой массив.
Чтобы увидеть, как работает метод preg_match_all, перейдите сюда:
http://php.net/manual/es/function.preg-match-all.php
А чтобы узнать больше о регулярных выражениях, перейдите сюда:
http://php.net/manual/es/reference.pcre.pattern.syntax.php
Других решений пока нет …