如何在php中验证和清理数组数据?

wlp8pajw  于 2023-01-08  发布在  PHP
关注(0)|答案(4)|浏览(107)

我想验证和清理来自POST阵列的数据。
我的POST数据如下所示:

Array
(
    [category_name] => fsdfsfwereq34
    [subCategory] => Array
        (
            [0] => sdfadsffasfasdf
            [1] => sdfasfdsafadsf
            [2] => safdfdasfas
        )

    [category-submitted] => TRUE
)
1

我可以验证和清理category_name,这就是我在PHP中的工作方式。

if (!empty( $_POST['category_name'])) { 
    $category = filter_input(INPUT_POST, 'category_name', FILTER_SANITIZE_STRING);  
} else {
    $category = NULL;
}

但是我不知道如何处理subCategory数组的值,谁能告诉我怎么做?
希望有人能帮帮我。谢谢。

dauxcl2d

dauxcl2d1#

你可以使用foreach来循环数组中的所有值,在循环中你可以将过滤后的值推送到一个新的数组$subCategory中(例如)。
例如:

$subCategory = $_POST['subCategory'];
$subcategories = array();
if (!empty( $subCategory ) && is_array( $subCategory ) ) {
  foreach( $subCategory as $key => $value ) {
    $subCategories[] = filter_var( $value, FILTER_SANITIZE_STRING )
  }
}
aydmsdu9

aydmsdu92#

你可以循环遍历或for array你可以使用这个:
http://php.net/manual/en/function.filter-input-array.php同样的方式。

ds97pgxw

ds97pgxw3#

7年后,我提出了一个答案,补充了Siim Kallari的答案,并评估了从javascript通过fetch()传递的POST变量,以防对某人有用。
您也可以使用filter_var_array

$parameters = filter_var_array(json_decode(file_get_contents("php://input"), true), FILTER_SANITIZE_FULL_SPECIAL_CHARS);
0md85ypi

0md85ypi4#

我知道这个问题现在已经8岁了(我的天),但你可以用

$array= map_deep( $array, 'sanitize_text_field' );

递归清理整个对象/多数组,并将原始数组设置为新值。
有关两者的详细信息,请参见herehere

相关问题