尝试这个功能,它会正确地删除任何十进制格式的intval,并删除任何非数字字符。
function bigintval($value) {
$value = trim($value);
if (ctype_digit($value)) {
return $value;
}
$value = preg_replace("/[^0-9](.*)$/", '', $value);
if (ctype_digit($value)) {
return $value;
}
return 0;
}
// SOME TESTING
echo '"3147483647.37" : '.bigintval("3147483647.37")."
";
echo '"3498773982793749879873429874.30872974" : '.bigintval("3498773982793749879873429874.30872974")."
";
echo '"hi mom!" : '.bigintval("hi mom!")."
";
echo '"+0123.45e6" : '.bigintval("+0123.45e6")."
";
?>
这里是生成的输出:
"3147483647.37" : 3147483647
"3498773982793749879873429874.30872974" : 3498773982793749879873429874
"hi mom!" : 0
"+0123.45e6" : 0
希望有帮助!