如何知道数组是否只包含数字或文本(两个字符串)

时间:2016-03-23 15:38:19

标签: php

编辑:不重复,我不要求检查整数,我要求非整数数字。所以不是。

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);

在示例中,这些变量是动态生成的。

我该怎么做?感谢。

0 个答案:

没有答案