-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
aggressor_ |
15-06-2012 04:26 1934509 |
Проверка символов (PHP)
Здравствуйте,
использую следующий код для фильтрации вводимого
PHP код:
$a = $_POST['a'];
$a = str_replace(",",".",$a);
if(!preg_match("/^[\d.]+$/",$a))
{
echo "Введите число";
exit;
}
Как можно ограничить ввод таких вариаций?
Код:
,,
...
3.
7...,,3
и т.д.
т.е. должны проходить только натуральные числа или же десятичные дроби (с одной запятой или точкой).
|
Tonny_Bennet |
15-06-2012 09:19 1934548 |
Подойдёт ?
Код:
^[+]?\d*\.?\d*[1-9]+\d*$)|(^[+]?[1-9]+\d*\.\d*$
|
после str_replace делайте приведение к типу float и проверяйте на 0.
неа, там ошибка на ошибке.
так правильнее пм
Код:
^[\+\-]?\d+(?:[\.\,]\d+)?$
ps по знаку разделения см. setlocale LC_NUMERIC
|
aggressor_ |
15-06-2012 15:14 1934756 |
Цитата:
Цитата Sham
после str_replace делайте приведение к типу float и проверяйте на 0. »
|
мало знаком с php... не могли бы вы подсказать, как это сделать?
|
Tonny_Bennet |
15-06-2012 15:36 1934775 |
|
aggressor_ |
15-06-2012 15:50 1934791 |
Tonny_Bennet,
да, я это читал.
Не совсем понимаю зачем делать float, формула и сейчас просчитывается отлично.
|
чтобы не делать preg_match
|
aggressor_ |
15-06-2012 16:00 1934800 |
Sham, окончательно запутался. Как тогда будет выглядеть конечный вариант всего этого?
|
PHP код:
$a = isset($_POST['a']) ? (float) str_replace(',', '.', $_POST['a']) : null;
if (!$a) exit ('Введите число');
|
aggressor_ |
15-06-2012 17:22 1934851 |
Если заменить
PHP код:
$a = $_POST['a']; $a = str_replace(",",".",$a); if(!preg_match("/^[\+\-]?\d+(?:[\.\,]\d+)?$/",$a)) { echo "Введите число"; exit; }
на это
PHP код:
$a = isset($_POST['a']) ? (float) str_replace(',', '.', $_POST['a']) : null;
if (!$a) exit ('Введите число');
то фильтр пропускает цифры с буквами (напр: 44r)
|
Tonny_Bennet |
15-06-2012 17:34 1934858 |
Цитата:
Цитата Sham
официальный ресурс php.net, откуда все копипастят »
|
Я в курсе, просто php.su рускоязычный и его Яндекс первой строчкой отдаёт ;)
aggressor_, а нельзя использовать функцию is_float?
P.S. К сожалению нет под рукой веб-сервера что б самому проверить
|
aggressor_ |
15-06-2012 17:46 1934861 |
Sham, понял)
Только немного не то, нужно чтобы не выполнялся php, если введены не числа. А так он просто обрезает буквы и повторяющиеся знаки и выполняет число.
Tonny_Bennet, php для меня большая загадка :unsure:
|
Время: 18:55.
© OSzone.net 2001-