Разработчику. Сборник рецептов PHP
Задавайте вопросы

Проверка правильности записи числа в строке

Вернуться назад

Задача

Вы хотите быть уверенным, что строка содержит число. Например, требуется проверить правильность возраста, введенного пользователем в поле ввода формы.

Решение

Обратитесь к функции is_numeric():

if (is_numeric('five'))   { /* false */ }
if (is_numeric(5))       { /* true */ }
if (is_numeric('5'))     { /* true */ }
if (is_numeric(-5))     { /* true */ }
if (is_numeric('-5'))    { /* true */ }

Обсуждение

Помимо работы с числами функция is_numeric() может также применяться к числовым строкам. Разница здесь в том, что целое число 5 и строка 5 в PHP с технической точки зрения не идентичны.(*)

Конечно, полезно, что функция is_numeric() правильно анализирует десятичные числа, такие как 5.1; однако числа с разделителем тысячного разряда, такие как 5,100, заставляют функцию is_numeric() вернуть false.

Для того чтобы убрать разделитель тысячного разряда из числа, перед функцией is_numeric() вызывается функция str_replace():


(*) Наиболее ярко это различие проявляется при переходе от PHP 3 к PHP 4. В PHP 3 empty('0') возвращала false, а в PHP 4 она возвращает true. С другой стороны, empty(0) всегда возвращала true и продолжает это делать. (В действительности для переменных, содержащих '0' и 0, следует вызывать empty().)

is_numeric(str_replace($number, ',', ''));

Для проверки числа на принадлежность к определенному типу существует множество связанных функций с именами, не требующими объяснений: is_bool(), is_float() (или is_double() или is_real(); все это одно и то же) и is_int() (или is_integer() или is_long()).

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ