проверить входящие данные, float

Статус
В этой теме нельзя размещать новые ответы.
Вот эта строчка приводит данные к типу float:
PHP:
$aa = (float)trim($_POST["aa"]);
В таком случае эта строчка не нужна:
PHP:
$aa=htmlspecialchars(mysql_real_escape_string(strip_tags($aa)));
На заметку:
htmlspecialchars используют не при записи в БД, а при выводе данных из нее. Функции mysql_real_escape_string вполне достаточно.

Проверка на число с плавающей точкой:
PHP:
preg_match("/^-?\d+[\.|\,]?\d{1,2}$/",$aa)
функция возвращает 1 если совпало и 0 если не совпало
 
PHP:
$aa = is_float($_POST["aa"]) && $_POST["aa"]>0 && $_POST["aa"]<1200 && number_format($_POST["aa"],2)==$_POST["aa"] ? $_POST["aa"] : false;
 
PHP:
preg_match("/^-?\d+[\.|\,]?\d{1,2}$/",$aa)
Работает, пускает все флоат цифры, кроме "1.00", "2.00", "3.00",..., "9.00" (их надо бы разрешит). Буквы отсеялись, что хорошо, но цифра с двумя точками тоже проходить, например "5..00". И после дроби только две цифры надо, а то типа "12.1233" тоже проходять. Как поправить?
 
PHP:
preg_match("/^-?\d+[\.|\,]{1}?\d{1,2}$/",$aa)
 
ты читать умеешь нет? выше постом готовое регулярное выражение
:) Да понимаю что будет работать, но впервые сталкиваюсь с таким выражением, на взгляд как набор символов без логики, вот и решил идти, что роднее. Да и как его разбить на ошибки для вывода пользователю, что он не положенное ввел
 
а зачем разбивать? регулярное выражение заменяет твои 6 строк быдлокода, которые к тому же некорректно проверяют. Можешь написать для пользователя в качестве примера форма входных данных. К примеру: 0.00
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху