【发布时间】:2010-11-02 16:31:18
【问题描述】:
在 PHP 5 中,每当我将数字作为输入时,我都会使用 intval()。这样,我想确保我没有得到字符串或浮点数。我的输入数字应该都是整数。但是当我得到数字 >= 2147483647 时,超过了有符号整数限制。
如何为所有大小的数字设置一个等效的 intval()?
这是我想要的:
<?php
$inputNumber = 3147483647.37;
$intNumber = intvalEquivalent($inputNumber);
echo $intNumber; // output: 3147483647
?>
非常感谢您!
编辑:根据一些答案,我尝试编写等效函数。但它还不能像 intval() 那样工作。我该如何改进它?它有什么问题?
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;
}
}
}
【问题讨论】:
-
那么究竟是什么不起作用,这里的其他解决方案有什么问题,包括正则表达式?