Как проверить в PHP, может ли строка быть преобразована в целое число? - PullRequest
1 голос
/ 02 августа 2011

У меня есть строки следующего вида: "37", "42", "7".

Мне нужно преобразовать их в целые числа.Я могу использовать intval.Но я хочу проверить, была ли строка в ожидаемом формате (под непредвиденным форматом я имею в виду, например, «abc» или «a7»).Как я могу сделать это до или после использования intval?

Насколько я знаю intval возвращает 1, если аргумент не был в соответствующем формате.Если это так, то нет способа проверить, был ли аргумент правильным форматом, просто проанализировав вывод intval.

Ответы [ 6 ]

6 голосов
/ 02 августа 2011

Вы можете использовать

ctype_digit()

http://ro2.php.net/ctype_digit

3 голосов
/ 02 августа 2011

Вы, вероятно, ищете filter_var .

$input = '5';
filter_var($input, FILTER_VALIDATE_INT); // returns 5
$input = 'asdf';
filter_var($input, FILTER_VALIDATE_INT); // returns false

Есть также много других опций, которые вы можете передать в эту функцию.Я считаю, что это было разработано как способ проверки представлений формы.

1 голос
/ 02 августа 2011

ctype_digit ($ x) && ($ x == этаж ($ x))

0 голосов
/ 02 августа 2011

Посредственное решение, но вы можете сделать:

preg_match('/^[0-9]*$/', $value)
0 голосов
/ 02 августа 2011

Как насчет (int) $ value == $ value?

Это приведёт значение к целому числу, так что левая рука определенно является целым числом, а затем проверяет, верно ли нетипизированное сравнение.

0 голосов
/ 02 августа 2011

Вы можете использовать функцию is_numeric () .Он должен возвращать true, если это число, и false, если в миксе есть буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...