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 de nombres flottants. Mes nombres d'entrée devraient tous être en nombres entiers. Mais quand j'obtiens des nombres> = 2147483647, la limite entière signée est franchie.PHP: intval() équivalent pour les nombres> = 2147483647
Que puis-je faire pour avoir un équivalent intval() pour les nombres dans toutes les tailles?
Voici ce que je veux avoir:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
Merci beaucoup à l'avance! Edit: Basé sur certaines réponses, j'ai essayé de coder une fonction équivalente. Mais cela ne fonctionne pas exactement comme le fait intval(). Comment puis-je l'améliorer? Qu'est-ce qui va pas avec ça?
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;
}
}
}
Alors qu'est-ce exactement fonctionne pas en elle et ce qui ne va pas avec d'autres solutions ici, y compris l'un regex? –