preg_match не поддерживает длинные числа?

nigirma

Новичок
Обнаружил, что preg_match не обрабатывает большие числа.

PHP:
function check($var) {
    echo 'Проверка ' . (preg_match('/^[0-9]+$/', $var) ? '' : 'не ') . 'пройдена<br>'; 
}

check(645346535653);              // Проверка пройдена
check(864567234234994);         // Проверка не пройдена
check(6749587378590489955);  // Проверка не пройдена
check('6749587378590489955'); // Проверка пройдена
Почему такое возникает?

Обойти можно если преобразовывать большие числа в строку, но не хотелось бы.
Как можно обойти проблему?
 

Вурдалак

Продвинутый новичок
PHP:
echo 6749587378590489955; // 6.74958737859E+18
Строка «6.74958737859E+18» помимо цифр содержит символы «.», «E», «+».
 

AmdY

Пью пиво
Команда форума
выполни
php -r "echo 6749587378590489955;"

p.s. опоздал
 

HEm

Сетевой бобер
Как обойти вы сами сказали, объясните, чем не нравится вариант в преобразованием числа в строку? чисто из религиозных соображений, или есть практические ситуации?

И как вы вообще можете работать с длинными числами? Насколько я помню, люди обычно для этого используют сторонние библиотеки.
 

Redjik

Джедай-мастер
наверное сайт по купле продаже карликовых государств
 
Сверху