Консультация № 146730
10.10.2008, 16:43
0.00 руб.
0 4 3
Здравствуйте, уважаемые эксперты.

Есть форма, представлюющая собой поле для ввода текста. Необходимо проверить является ли введенный текст числом. Сам проверяю следующим образом:

function chislo($a)
{
for ($i=0;$i<=(strlen($a)-1);$i++)
{
if ((($a[$i]=="0")or($a[$i]=="1")or($a[$i]=="2")or($a[$i]=="3")or($a[$i]=="4")or($a[$i]=="5")or($a[$i]=="6")or($a[$i]=="7")or($a[$i]=="8")or($a[$i]=="9"))!=true)
{
echo $a." - не число!"."
";
$n=0;
return;

}
}
}


Вопрос: Существует ли в PHP более короткий способ проверки является ли строка числом. Если возможно - приведите, пожалуйста пример.

Обсуждение

Неизвестный
10.10.2008, 16:47
общий
а регулярные выражения зачем, спрашиватся?
а в ответе ошибочка
Код:
  return preg_match('/^\d+$/', $a);
или так
return preg_match('/^(\d+)$/', $a);

так будет правильней
ибо у цифр нет регистра ну и цифр как минимум одна должна быть
Неизвестный
10.10.2008, 16:49
общий
это ответ
Здравствуйте, Ihar13!

Почитайте про регулярные выражения

Приложение:
function chislo($a) {
return preg_match('/^\d$/i', $a);
}
Неизвестный
10.10.2008, 17:11
общий
это ответ
Здравствуйте, Ihar13!
1. Можно использовать функции, напр.
if (!is_numeric($a)) echo $a." - не число!"."
";
2. Можно использовать регулярные выражения, напр.
if (!preg_match("/^[0-9]*$/i",$a)) echo $a." - не число!"."
"
Неизвестный
10.10.2008, 17:12
общий
это ответ
Здравствуйте, Ihar13!
для целых чисел:
bool ctype_digit ( string $text ) - для проверки, являются ли все символы в строке $text цифрами.
если хотите проверить не является ли 1-я цифра нолем, то допишите условие $text[0]=="0"
результат (ctype_digit($text) && $text[0]!="0")
можете еще добавить проверку на "минус", если нужно.

для действительных чисел и не только можете попробовать
bool is_numeric ( mixed $var )
можно в комбинации с некоторыми функциями для допонительных условий.
Форма ответа