Как проверить, что строка содержит число
Короткий ответ
is_numeric() возвращает true для целых и дробных чисел в строке:
<?php
var_dump(is_numeric('42'), is_numeric('3.14'), is_numeric('12abc'));Результат:
bool(true)
bool(true)
bool(false)Только цифры
is_numeric() пропускает и '1e5', и '-7', и ' 5'. Если нужны только цифры, используйте ctype_digit():
<?php
var_dump(is_numeric('1e5'), ctype_digit('1e5'));
var_dump(ctype_digit('2026'), ctype_digit(''));Результат:
bool(true)
bool(false)
bool(true)
bool(false)Целое число в границах
filter_var() проверяет и сразу возвращает число:
<?php
var_dump(filter_var('25', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1, 'max_range' => 100]]));
var_dump(filter_var('250', FILTER_VALIDATE_INT, ['options' => ['min_range' => 1, 'max_range' => 100]]));Результат:
int(25)
bool(false)Функции из этого ответа
- is_numeric — Проверяет, является ли значение числом или строкой с числом.
- filter_var — Проверяет или очищает значение по заданному правилу.
- preg_match — Проверяет строку по регулярному выражению.