W PHP 5 używam intval(), gdy tylko otrzymam liczby jako dane wejściowe. W ten sposób chcę się upewnić, że nie otrzymuję żadnych ciągów ani liczb zmiennoprzecinkowych. Moje numery wejściowe powinny być w liczbach całkowitych. Ale gdy otrzymam liczby> = 2147483647, znak liczby całkowitej zostanie przekroczony.PHP: intval() odpowiednik dla liczb> = 2147483647
Co mogę zrobić, aby mieć odpowiednik intval() dla liczb we wszystkich rozmiarach?
Oto, co chcę mieć:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
Dziękuję bardzo z góry!
Edycja: Na podstawie niektórych odpowiedzi próbowałem zakodować równoważną funkcję. Ale to nie działa dokładnie tak, jak jeszcze intval(). Jak mogę to poprawić? Co jest z tym nie tak?
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;
}
}
}
Więc co dokładnie nie działa w nim i co się dzieje z innymi rozwiązaniami tutaj, łącznie z regex? –