php проверить является ли строка числом

PHP проверка на число

Как в php проверить является ли переменная целым положительным число. Именно целым (дробное не допускается), т.е. функция is_numeric не подходит. ( is_int тоже не подходит )

14 ответов 14

php проверить является ли строка числом. Смотреть фото php проверить является ли строка числом. Смотреть картинку php проверить является ли строка числом. Картинка про php проверить является ли строка числом. Фото php проверить является ли строка числом

P.S: Существует бесконечное кол-во способов решения вашего туманно сформулированного вопроса

Уже предложена куча вариантов, но я бы наверное сделал так

php проверить является ли строка числом. Смотреть фото php проверить является ли строка числом. Смотреть картинку php проверить является ли строка числом. Картинка про php проверить является ли строка числом. Фото php проверить является ли строка числом

как вариант проверь сначала is_numeric, а потом проверь что в строке отсутствуют знаки ‘+’ и ‘.’ и ‘,’

Мне нравится такое решение, всегда использую:

php проверить является ли строка числом. Смотреть фото php проверить является ли строка числом. Смотреть картинку php проверить является ли строка числом. Картинка про php проверить является ли строка числом. Фото php проверить является ли строка числом

php проверить является ли строка числом. Смотреть фото php проверить является ли строка числом. Смотреть картинку php проверить является ли строка числом. Картинка про php проверить является ли строка числом. Фото php проверить является ли строка числом

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.9.17.40238

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

is_int

(PHP 4, PHP 5, PHP 7, PHP 8)

is_int — Проверяет, является ли переменная целым числом

Описание

Проверяет, является ли тип переменной целочисленным.

Список параметров

Возвращаемые значения

Примеры

Пример #1 Пример использования is_int()

Результат выполнения данного примера:

Смотрите также

User Contributed Notes 30 notes

I’ve found that both that is_int and ctype_digit don’t behave quite as I’d expect, so I made a simple function called isInteger which does. I hope somebody finds it useful.

var_dump ( is_int ( 23 )); //bool(true)
var_dump ( is_int ( «23» )); //bool(false)
var_dump ( is_int ( 23.5 )); //bool(false)
var_dump ( is_int ( NULL )); //bool(false)
var_dump ( is_int ( «» )); //bool(false)

var_dump ( ctype_digit ( 23 )); //bool(true)
var_dump ( ctype_digit ( «23» )); //bool(false)
var_dump ( ctype_digit ( 23.5 )); //bool(false)
var_dump ( ctype_digit ( NULL )); //bool(false)
var_dump ( ctype_digit ( «» )); //bool(true)

var_dump ( isInteger ( 23 )); //bool(true)
var_dump ( isInteger ( «23» )); //bool(true)
var_dump ( isInteger ( 23.5 )); //bool(false)
var_dump ( isInteger ( NULL )); //bool(false)
var_dump ( isInteger ( «» )); //bool(false)
?>

The correct output for parts of his examples should be:

Keep in mind that is_int() operates in signed fashion, not unsigned, and is limited to the word size of the environment php is running in.

In a 32-bit environment:

( 2147483647 ); // true
is_int ( 2147483648 ); // false
is_int ( 9223372036854775807 ); // false
is_int ( 9223372036854775808 ); // false
?>

In a 64-bit environment:

( 2147483647 ); // true
is_int ( 2147483648 ); // true
is_int ( 9223372036854775807 ); // true
is_int ( 9223372036854775808 ); // false
?>

If you find yourself deployed in a 32-bit environment where you are required to deal with numeric confirmation of integers (and integers only) potentially breaching the 32-bit span, you can combine is_int() with is_float() to guarantee a cover of the full, signed 64-bit span:

= 2147483647 ; // will always be true for is_int(), but never for is_float()
$big = 9223372036854775807 ; // will only be true for is_int() in a 64-bit environment

I’ve found a faster way of determining an integer.
On my env, this method takes about half the time of using is_int().

Cast the value then check if it is identical to the original.

With this function you can check if every of multiple variables are int. This is a little more comfortable than writing ‘is_int’ for every variable you’ve got.

Simon Neaves’s answer is incomplete: negative integers will return false.

Источник

ctype_digit

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ctype_digit — Проверяет наличие цифровых символов в строке

Описание

Проверяет, являются ли все символы в строке text цифровыми.

Список параметров

Возвращаемые значения

Примеры

Пример #1 Пример использования ctype_digit()

Результат выполнения данного примера:

Пример #2 Пример использования ctype_digit() со сравнением строк и целых чисел

Смотрите также

User Contributed Notes 14 notes

All basic PHP functions which i tried returned unexpected results. I would just like to check whether some variable only contains numbers. For example: when i spread my script to the public i cannot require users to only use numbers as string or as integer. For those situation i wrote my own function which handles all inconveniences of other functions and which is not depending on regular expressions. Some people strongly believe that regular functions slow down your script.

The reason to write this function:
1. is_numeric() accepts values like: +0123.45e6 (but you would expect it would not)
2. is_int() does not accept HTML form fields (like: 123) because they are treated as strings (like: «123»).
3. ctype_digit() excepts all numbers to be strings (like: «123») and does not validate real integers (like: 123).
4. Probably some functions would parse a boolean (like: true or false) as 0 or 1 and validate it in that manner.

ctype_digit() will treat all passed integers below 256 as character-codes. It returns true for 48 through 57 (ASCII ‘0’-‘9’) and false for the rest.

(Note: the PHP type must be an int; if you pass strings it works as expected)

Источник

is_float

(PHP 4, PHP 5, PHP 7, PHP 8)

is_float — Проверяет, является ли переменная числом с плавающей точкой

Описание

Проверяет, является ли данная переменная числом с плавающей точкой.

Список параметров

Возвращаемые значения

Примеры

Пример #1 Пример использования is_float()

Результат выполнения данного примера:

Смотрите также

User Contributed Notes 10 notes

Coercing the value to float and back to string was a neat trick. You can also just add a literal 0 to whatever you’re checking.

( «5.0» + 0 ); // true
isfloat ( «5.0» ); // false
isfloat ( 5 + 0 ); // false
isfloat ( 5.0 + 0 ); // false
isfloat ( ‘a’ + 0 ); // false
?>

YMMV

If you want to test whether a string is containing a float, rather than if a variable is a float, you can use this simple little function:

function isfloat($f) return ($f == (string)(float)$f);

Boylett’s solution is elegant (http://php.net/manual/en/function.is-float.php#85848), but won’t work for long float’s or variables that are not explicitly type of ‘string’ or for long floats that are encased in quotes, making it a string that will be truncated/rounded when cast to a float. So, further logic must be completed to test for the case. Take the following example:

if (! function_exists ( «test_float» )) <

Why is it not working now, but the value is truly a float? Same reasoning as mentioned before. The float is so long that it’s truncated/rounded and doesn’t match the comparison being done with the short-hand function.

So, as you can see, more logic should be applied to the variable you’re testing.

As celelibi at gmail dot com stated, is_float checks ONLY the type of the variable not the data it holds!

If you want to check if string represent a floating point value use the following regular expression and not is_float(),
or poorly written custom functions.

Yet another regular expression for float in real life:

Источник

Проверка, является ли переменная целым числом в PHP

У меня есть следующий код

который я собираюсь использовать для просмотра разных «страниц» базы данных (результаты 1-10, 11-20 и т. д.). Однако я не могу заставить функцию is_int() работать правильно. Ввод «1» в url (noobs.РНР?p=1) дает мне ошибку недопустимой страницы, а также что-то вроде «asdf».

12 ответов

используя is_numeric() для проверки, является ли переменная целым числом, это плохая идея. Эта функция будет возвращать TRUE на 3.14 например. Это не ожидаемое поведение.

чтобы сделать это правильно, вы можете использовать один из следующих вариантов:

учитывая этот массив переменных:

первый вариант (FILTER_VALIDATE_INT путь):

второй вариант (литье Способ сравнения):

третий вариант (CTYPE_DIGIT путь):

четвертый вариант (REGEX way):

вы можете увидеть это, позвонив var_dump :

используя is_numeric обеспечит желаемый результат (имейте в виду, что позволяет такие значения, как: 0x24 ).

когда браузер посылает p в строке запроса он принимается как строка, а не int. всегда будет возвращать false.

вместо is_numeric() или ctype_digit()

/!\ Best anwser неверно, is_numeric() возвращает true для целого числа и всех числовых форм, таких как «9.1»

PS: Я знаю, что это старый пост, но все же третий в google ищет «php-целое число»

просто для удовольствия я протестировал несколько из упомянутых методов, плюс один, который я использовал в качестве решения в течение многих лет, когда я знаю, что мой вход является положительным числом или строковым эквивалентом.

Я проверил это со 125,000 итерациями, с каждой итерацией, проходящей в том же наборе типов переменных и значений.

Способ 1: 0.0552167892456
Способ 2: 0.126773834229
Способ 3: 0.143012046814
Способ 4: 0.0979189872742
Метод 5: 0.112988948822
Способ 6: 0.0858821868896

(я даже не проверить регулярное выражение, я имею в виду, серьезно. regex для этого?)

Примечание:
Метод 4 всегда возвращает false для отрицательных чисел (отрицательное целое число или строковый эквивалент), поэтому хороший метод последовательно обнаруживает, что значение является положительным целым числом.
Метод 1 возвращает true для отрицательного целого числа, но false для строкового эквивалента отрицательного целого числа, поэтому не используйте этот метод, если вы не уверены, что ваш вход никогда не будет содержать отрицательное число в строке или целочисленная форма, и если это так, ваш процесс не будет нарушать это поведение.

код, используемый для получения вывода выше:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *