Вот обработчик поступивших данных:
$a = $_POST['a'];А вот проверка:
$b = $_POST['b'];
$c = $_POST['c'];
$a = (int)$a;
$b = (int)$b;
$c = (int)$c;
if( !is_float( $a ) || !is_float( $b ) || !is_float( $c ) ) {
$error .= 'Вы ввели не числа';
}
Всегда выдает false и пишет, что данные не числа.
Также пробовал вот так:
$a = (int)$_POST['a'];Но тоже пишет, что не числа.
$b = (int)$_POST['b'];
$c = (int)$_POST['c'];
Спустя 17 минут, 46 секунд (28.11.2010 - 15:54) DySprozin написал(а):
AlmazDelDiablo
это типа такой прикол?))
— вы все - int
— да, как прикажете, мой господин!
— тааак... проверка: вы float?
— нет, мой господин, ты же сам сказал, что мы int!
— тогда вы вообще не числа!

может, is_int?
это типа такой прикол?))
— вы все - int
— да, как прикажете, мой господин!
— тааак... проверка: вы float?
— нет, мой господин, ты же сам сказал, что мы int!
— тогда вы вообще не числа!

может, is_int?
Спустя 3 минуты, 11 секунд (28.11.2010 - 15:57) nugle написал(а):
надо вместо is_float is_int писать, но в чём прикол? Вы превращаете в числа, а потом проверяете, число ли это.
Спустя 2 минуты, 27 секунд (28.11.2010 - 15:59) DySprozin написал(а):
nugle
;;но в чём прикол
прикол в том, что буквы в цифры превратить нельзя (;
;;но в чём прикол
прикол в том, что буквы в цифры превратить нельзя (;
Спустя 3 минуты, 43 секунды (28.11.2010 - 16:03) nugle написал(а):
ааа, понятно, ну тогда is_int
Спустя 4 минуты, 3 секунды (28.11.2010 - 16:07) Slays написал(а):
DySprozin
при использовании int на буквенную строку, она тоже преобразуется, только в 0
ТС
Да и зачем ваще проверять является ли число числом, если ты принудительно им говоришь что они стопудова числа
Ну вобщем вверху все правильно сказали, я просто подытожил =)
DySprozin
вверху отжог
при использовании int на буквенную строку, она тоже преобразуется, только в 0
ТС
Да и зачем ваще проверять является ли число числом, если ты принудительно им говоришь что они стопудова числа
Ну вобщем вверху все правильно сказали, я просто подытожил =)
DySprozin
вверху отжог

Спустя 15 минут, 53 секунды (28.11.2010 - 16:23) AlmazDelDiablo написал(а):
Да уж. С Флоат и инт я накосячил )
Так, ладно ) Тогда задам вопрос по другому. Мне надо, чтобы если человек ввел не число (с точкой или без нее — не имеет зачения) ему выдало ошибку. Можно ли это сделать без регулярок?)
Так, ладно ) Тогда задам вопрос по другому. Мне надо, чтобы если человек ввел не число (с точкой или без нее — не имеет зачения) ему выдало ошибку. Можно ли это сделать без регулярок?)
Спустя 8 минут, 39 секунд (28.11.2010 - 16:32) DySprozin написал(а):
AlmazDelDiablo
а ты сразу, в лоб спрашивай: ctype_digit
а ты сразу, в лоб спрашивай: ctype_digit
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
if( !ctype_digit( $a ) || !ctype_digit( $b ) || !ctype_digit( $c ) ) {
$error .= 'Вы ввели не числа';
}
Спустя 53 минуты, 27 секунд (28.11.2010 - 17:25) inpost написал(а):
AlmazDelDiablo
А почему без регулярок? Сделай это на регулярке.
А почему без регулярок? Сделай это на регулярке.
Спустя 7 минут, 35 секунд (28.11.2010 - 17:33) DySprozin написал(а):
inpost
а зачем регулярка там, где можно обойтись без регулярки?
а зачем регулярка там, где можно обойтись без регулярки?

Спустя 3 минуты, 27 секунд (28.11.2010 - 17:36) vinnie написал(а):
if (preg_match ("#^[^0-9\.]+$#i", $a) or preg_match ("#^[^0-9\.]+$#i", $b) or preg_match ("#^[^0-9\.]+$#i", $c))
echo "Это не число";
Спустя 13 секунд (28.11.2010 - 17:36) inpost написал(а):
DySprozin
Ну это уже ранее было: if_float, просто пусть чему-нибудь новому человек научится =)
Ну это уже ранее было: if_float, просто пусть чему-нибудь новому человек научится =)
Спустя 4 минуты, 37 секунд (28.11.2010 - 17:41) ИНСИ написал(а):
Спустя 41 секунда (28.11.2010 - 17:42) vinnie написал(а):
мы ему все варианты показываем
Спустя 10 минут, 26 секунд (28.11.2010 - 17:52) DySprozin написал(а):
ну тогда вот:
а то в примере выше за каким-то дьяволом модификатор "i" и ^$ появились B)
а в учетом того, что у нас int:
$tpl="#[^0-9\.]+#";
if(preg_match($tpl,$a) || preg_match($tpl,$b) || preg_match($tpl,$c)) echo "это не число";
а то в примере выше за каким-то дьяволом модификатор "i" и ^$ появились B)
а в учетом того, что у нас int:
$tpl="#[^0-9]+#";
if(preg_match($tpl,$a) || preg_match($tpl,$b) || preg_match($tpl,$c)) echo "это не число";
Спустя 2 минуты, 35 секунд (28.11.2010 - 17:55) vinnie написал(а):
DySprozin
чем тебе моя регулярка не понравилась?
чем тебе моя регулярка не понравилась?
Спустя 1 минута, 29 секунд (28.11.2010 - 17:56) vinnie написал(а):
хотя ты прав))) много лишнего написал
Спустя 3 минуты, 26 секунд (28.11.2010 - 18:00) vinnie написал(а):
цифры в верхнем регистре))))) хохма
Спустя 3 минуты, 20 секунд (28.11.2010 - 18:03) DySprozin написал(а):
а теперь к вопросу "почему не регулярка":
этот вариант _гораздо_ понятней и короче (;
if(!ctype_digit($a) || !ctype_digit($b) || !ctype_digit($c)) echo "это не число";
этот вариант _гораздо_ понятней и короче (;
Спустя 3 минуты, 21 секунда (28.11.2010 - 18:06) DySprozin написал(а):
а вот еще короче:
все, ухожу-ухожу-ухожу :D
if(!ctype_digit($a.$b.$c)) echo "это не число";
все, ухожу-ухожу-ухожу :D
Спустя 1 минута, 34 секунды (28.11.2010 - 18:08) vinnie написал(а):
if(!ctype_digit($a) || !ctype_digit($b) || !ctype_digit($c)) echo "это не число";
если встретится число с плавающей точкой, он скажет, что это не число
Спустя 1 минута, 18 секунд (28.11.2010 - 18:09) DySprozin написал(а):
vinnie
так изначально у нас условие: int
так изначально у нас условие: int

Спустя 59 секунд (28.11.2010 - 18:10) vinnie написал(а):
а кто-то написал, что можно и с точкой) автор вроде
Спустя 1 минута, 26 секунд (28.11.2010 - 18:12) inpost написал(а):
а чем is_float вам не нравится???
Спустя 3 минуты, 54 секунды (28.11.2010 - 18:16) ИНСИ написал(а):
копец, столько вариантов все дают, решил дать автору:
while(list($value) = each($_POST)) {
if(ctype_digit($value) !== true) echo "ctype_digit: Строка $value не состоит только из цифр.\n";
if(is_numeric($value) !== true) echo "is_numeric: Строка $value не состоит только из цифр.\n";
if(is_int($value) !== true) echo "is_int: Строка $value не состоит только из цифр.\n";
if(is_integer($value) !== true) echo "is_integer: Строка $value не состоит только из цифр.\n";
if(is_string($value) === true) echo "is_string: Строка $value не состоит только из цифр.\n";
}
Спустя 3 минуты, 5 секунд (28.11.2010 - 18:19) DySprozin написал(а):
;;а кто-то написал, что можно и с точкой) автор вроде
ну тогда у кого-то раздвоение личности или двойка по типам :P
если есть точки, то вот короткий вариант:
;;а чем is_float вам не нравится???
потому что передаются переменные как string ;)
ну тогда у кого-то раздвоение личности или двойка по типам :P
если есть точки, то вот короткий вариант:
if(preg_match("#[^0-9\.]+#","$a$b$c")) echo "это не число";
;;а чем is_float вам не нравится???
потому что передаются переменные как string ;)
Спустя 2 минуты (28.11.2010 - 18:21) DySprozin написал(а):
welbox2
это что?))) ты сначала говоришь, что value - это int, а потом проверяешь это
это что?))) ты сначала говоришь, что value - это int, а потом проверяешь это

Спустя 2 минуты, 24 секунды (28.11.2010 - 18:23) ИНСИ написал(а):
DySprozin опа, не заметил

Спустя 30 секунд (28.11.2010 - 18:24) inpost написал(а):
Преобразовать его в float?
http://php.net/manual/en/function.floatval.php
http://php.net/manual/en/function.floatval.php
Спустя 2 минуты, 14 секунд (28.11.2010 - 18:26) inpost написал(а):
$a = 0.0+$a; // Теперь значение будет int/float
http://php.su/learnphp/datatypes/?mn
http://php.su/learnphp/datatypes/?mn
Спустя 14 минут, 28 секунд (28.11.2010 - 18:40) DySprozin написал(а):
;;Преобразовать его в float?
угу, а потом проверить функцией is_float()
угу, а потом проверить функцией is_float()

Спустя 11 минут, 7 секунд (28.11.2010 - 18:51) inpost написал(а):
DySprozin
А нет смысле потом проверять. Достаточно убедиться, что оно не пустое, это число.
А нет смысле потом проверять. Достаточно убедиться, что оно не пустое, это число.
Спустя 3 минуты, 14 секунд (28.11.2010 - 18:55) DySprozin написал(а):
inpost
а если это нуль? ведь юзер имеет право ввести нуль - тоже ведь число (;
а если это нуль? ведь юзер имеет право ввести нуль - тоже ведь число (;
Спустя 2 часа, 18 минут, 45 секунд (28.11.2010 - 21:13) AlmazDelDiablo написал(а):
Спасибо всем
Через регулярку заработало ) И спасибо за разбор, что же для чего.
Сори за путаницу — мне надо было число с возможно плавающей точкой
ПС: Я делал калькулятор квадратных уравнений ^^

Сори за путаницу — мне надо было число с возможно плавающей точкой
ПС: Я делал калькулятор квадратных уравнений ^^
Спустя 12 часов, 28 минут, 47 секунд (29.11.2010 - 09:42) linker написал(а):
Регулярки в топку, не нужны они здесь вообще
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
if(!is_numeric($a) || !is_numeric($b) || !is_numeric($c))
{
$error .= 'Вы ввели не числа';
}
Спустя 8 часов, 15 минут, 26 секунд (29.11.2010 - 17:58) AlmazDelDiablo написал(а):
Подниму темку. Слушайте, сделал калькулятор степеней, но если ответ очень большой (например, 35 в степени 234), то ответ выдает INF. Можно ли расширить число, максимальное для вывода?)
Спустя 4 часа, 27 минут, 43 секунды (29.11.2010 - 22:25) DySprozin написал(а):
AlmazDelDiablo
пользуйся массивами (;
пользуйся массивами (;
Спустя 11 часов, 43 минуты, 28 секунд (30.11.2010 - 10:09) linker написал(а):
DySprozin
Ну ты оригинал.
Есть замечательная библиотека BCMATH
Ну ты оригинал.
Есть замечательная библиотека BCMATH
echo bcpow(35, 234, 0);
Спустя 9 часов, 31 минута, 21 секунда (30.11.2010 - 19:40) DySprozin написал(а):
какая прелесть!
респект, не знал


_____________
Блог | VK | GitHub | Twitch