PHP: intval() équivalent pour le nombre >= 2147483647

En PHP 5, j'utilise intval() chaque fois que je reçois des nombres en entrée. De cette façon, je veux m'assurer que je n'ai pas de chaînes ou des nombres décimaux. Mon entrée chiffres devraient tous être des nombres entiers. Mais quand je reçois un nombre >= 2147483647, l'entier signé limite est franchie.

Que puis-je faire pour avoir un intval() équivalent pour les nombres dans toutes les tailles?

Voici ce que je veux:

<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; //output: 3147483647
?>

Je vous remercie beaucoup à l'avance!

Edit: sur la Base des réponses, j'ai essayé de coder une fonction équivalente. Mais cela ne fonctionne pas exactement comme intval() n'est pas encore. Comment puis-je l'améliorer? Quel est le problème avec elle?

function intval2($text) {
    $text = trim($text);
    $result = ctype_digit($text);
    if ($result == TRUE) {
        return $text;
    }
    else {
        $newText = sprintf('%.0f', $text);
        $result = ctype_digit($newText);
        if ($result == TRUE) {
            return $newText;
        }
        else {
             return 0;
        }
    }
}
  • Donc exactement ce qui ne fonctionne pas dans il et quel est le problème avec d'autres solutions, dont l'une regex?
InformationsquelleAutor caw | 2009-06-13