Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > регулярое выражение для проверки числа


Автор: godvinn 31.8.2009, 16:19
Привет всем. Помогите написать регулярное выражение для проверки того что введенное число пользователя является числом и что входит в диапазон от 1-10. smile 

Автор: unicross 31.8.2009, 16:25
Код

$num = (int)$var;
if ($num>0 && $num<11) echo "Норма";
else echo ":(";

Автор: Ипатьев 31.8.2009, 16:26
а обязательно регулярным?

Автор: Ипатьев 31.8.2009, 16:42
unicross, $num="11 друзей Оушена";

Автор: unicross 31.8.2009, 16:52
Цитата(Ипатьев @  31.8.2009,  17:42 Найти цитируемый пост)
$num="11 друзей Оушена";

Результат - ":("
Цитата(Ипатьев @  31.8.2009,  17:26 Найти цитируемый пост)
а обязательно регулярным?

Нет проблем...
Код

if (preg_match('#^([1-9]|10)$#s', $var)) echo "Норма";
else echo ":(";

Автор: Ипатьев 31.8.2009, 17:03
про обязательно регулярным это я автора спросил.
а друзей, конечно, было 9 сначала

Автор: NewDima 31.8.2009, 17:40
Ипатьев, жжешь =)
для проверки валидности инта есть пара еще способов:
is_numeric()
а вот это пока не работает, но надеюсь в скором времени будет:
filter_data($num, FILTER_VALIDATE_INT) 

Автор: Ипатьев 31.8.2009, 17:46
is_numeric не подойдет, скажем, для данных из реквеста.
а вот ctype, в отличие от filter, совсем не экспериментальная

Автор: bars80080 31.8.2009, 17:46
а is_numeric(
Цитата(NewDima @  31.8.2009,  17:40 Найти цитируемый пост)
для проверки валидности инта есть пара еще способов:
is_numeric()

Код

$t = 0x333333;
$y = is_numeric($t);
var_dump($y);



по-моему, я уже обращал на это внимание?

Автор: NewDima 31.8.2009, 18:00
Код

<?php
function is_valid($ident) {
    return is_numeric($ident) && $ident>0 && $ident<11;
}
var_dump(is_valid('0xA'));
var_dump(is_valid('0xB'));
var_dump(is_valid('0x0'));
var_dump(is_valid('0x10'));
var_dump(is_valid('A'));
var_dump(is_valid('10'));
var_dump(is_valid('11'));
var_dump(is_valid('0x333333'));
var_dump(is_valid(0x333333));
?>

вывод
Код

bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)
bool(false)

Что не устраивает?
Шестнадцатиричные числа - тоже числа

Автор: Ипатьев 31.8.2009, 18:23
Че-то меня проглючило жестоко.
Перепутал с is_int. Сорри.

Автор: bars80080 31.8.2009, 19:14
Цитата(NewDima @  31.8.2009,  18:00 Найти цитируемый пост)
Шестнадцатиричные числа - тоже числа 

от 1 до 10, как-то явно настраивает на исключительно десятичный формат

Автор: NewDima 31.8.2009, 19:30
) не спорю, да не суть

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)