PHP过滤器,如何过滤输入数组

PHP过滤器,如何过滤输入数组,php,arrays,filter,Php,Arrays,Filter,我正在使用PHP过滤器执行表单数据的基本清理和验证 我面临的主要问题是,我对表单进行了标记,以便所有数据都位于一个数组中,用于POST输入。e、 g.表单字段、页面[名称]、页面[段塞]、页面[正文]、页面[状态]等 使用以下命令: filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING); OR filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);

我正在使用PHP过滤器执行表单数据的基本清理和验证

我面临的主要问题是,我对表单进行了标记,以便所有数据都位于一个数组中,用于POST输入。e、 g.表单字段、页面[名称]、页面[段塞]、页面[正文]、页面[状态]等

使用以下命令:

filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING);
OR
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);
我无法访问该变量。有人能告诉我使用filter_input()访问数组数据时使用的正确名称吗

$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);

我不认为您可以访问单个值(很容易,如您所愿),但是您可以只过滤
页面
数组并获得您想要的值

$page = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
if (array_key_exists('name', $page)) {
    $name = $page['name'];
}
或者,如果您不介意失去处理原始输入的能力,那么您可以使用:

if (isset($_POST['page']['name'])) {
    $name = filter_var($_POST['page']['name'], FILTER_SANITIZE_STRING);
}

然而,这两个变量都很难看。

顺便说一句,我在谷歌上疯狂搜索,什么也没找到。你确定在清理之前变量有一个值吗?@anthony是的,它确实有一个值,如果我以名称的形式发送它就可以了。只是不确定使用此筛选方法访问数组键的符号。当时并不容易,PHP需要使筛选\输入\数组递归。。。目前,在这种情况下直接访问$u POST仍然容易得多。是的,两者都非常丑陋。我还可以将表单切换为单个var名称,并避免这个问题。不被支持的羞耻。绝对。在您的案例中,使用单个名称(对于过滤器扩展)更方便;不幸的是,请检查@Fletcher Moore的答案。非常优雅有效!