我使用 is_numeric 来验证来自 POST 数据的整数,例如:
if( ! is_numeric($_POST['integer_string'])) return FALSE // not a integer
然后我发现如果值有小数,is_numeric 将返回 TRUE。
接下来我尝试了强制转换和 is_int:
$int = (int) $_POST['numeric_string'];
if( ! $int) return FALSE // not a integer
但是在传递一个非数值后,强制转换会截断整数。
$int = '222i2';
echo $int;
// 222
我试图验证的整数将在 SQL 的 WHERE 子句中使用,以识别整数主键。
从 POST 数据中验证整数的万无一失的方法是什么,或者您个人如何处理这个问题?