编辑:不重复,我不要求检查整数,我要求非整数数字。所以不是。
EDIT2:新剧本。
上次编辑(供参考):您正在寻找is_numeric()
。另外,不要使用" sanitation"而是使用preg_match()
来确保它只包含允许的字符(使用正则表达式)。通过这种方式,您可以提醒用户无效字符,并且在他/她不知情的情况下不会修改他/她的输入。
我希望自动化大型表单的变量声明/清理过程。
我使用包含表单所有元素名称的列表(数组),以便循环遍历它们并动态声明/清理它们。
$list = array( 'name', '...' );
foreach ( $list as $name ) {
if ( is_array($_POST[$name]) ) {
$$name = filter_input( INPUT_POST , $name , FILTER_SANITIZE_STRING , FILTER_REQUIRE_ARRAY );
foreach ($$name as $key) {
// not sure, but i'd do this
$key = preg_replace('[a-z]', '', $key);
if ( is_numeric($$name[$key]) ) {
$$key = (int) $$name[$key];
} else {
$$key = $$name[$key];
}
}
} else {
if ( is_numeric($_POST[$name]) ) {
$$name = filter_input( INPUT_POST , $name , FILTER_SANITIZE_NUMBER_INT );
} else {
$$name = filter_input( INPUT_POST , $name , FILTER_SANITIZE_STRING );
}
}
}
所以现在,从理论上讲,我可以简单地使用变量名并拥有数组的值:
$stmt->bind_param('isis', $nums, $texts, $more_nums, $more_texts);
在示例中,这些变量是动态生成的。
我该怎么做?感谢。