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

2022-08-30 23:27:04

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

我遇到的主要问题是,我标记了我的表单,以便所有数据都在一个数组中用于POST输入。例如,表单字段、页面[名称]、页面[slug]、页面[正文]、页面[状态]等。

使用以下命令:

filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING);
OR
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);

我无法访问该变量。有人可以告诉我使用filter_input()访问数组数据的正确名称吗?


答案 1

我不认为您可以访问单个值(根据需要轻松访问),但是您可以过滤数组并获取所需的值。page

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

然而,两者都非常丑陋。


答案 2

怎么样

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