Filtering multi-dimensional POST with PHP filter_input_array

antesoles

Is there a way to filter/sanitize multi-dimensional POST data with PHP's filter_input_array?

Given a form which results in following POST data:

$_POST[
    'level1a' => [
        'level2a' => [
            'key1' => 'value1',
            'key2' => 'value2'
        ],
        'level2b' => [
            'key1' => 'value1',
            'key2' => 'value2'
        ]
    ],
    'level1b' => [
        'level2a' => [
            'key1' => 'value1',
            'key2' => 'value2'
        ],
        'level2b' => [
            'key1' => 'value1',
            'key2' => 'value2'
        ]
    ]
]

I don't see a way to tell the filter_input_array function that the data to check is nested one level deeper. There seems to be only the flag FILTER_REQUIRE_ARRAY, but no way to tell on which level it needs to check.

Working example with less dimensions:

If it was just a less nested set of data, it would be pretty simple:

$_POST[
    'level1a' => [
        'level2a' => 'value1',
        'level2b' => 'value2'
    ],
    'level1b' => [
        'level2a' => 'value1',
        'level2b' => 'value2'
    ]
]

Could be filtered with:

$args = array(
    'level1a' => array(
        'filter' => FILTER_SANITIZE_STRING, 
        'flags' => FILTER_REQUIRE_ARRAY
    ),
    'level1b' => array(
        'filter' => FILTER_SANITIZE_STRING, 
        'flags' => FILTER_REQUIRE_ARRAY
    )
);
$form_data = filter_input_array(INPUT_POST, $args);

But how to solve it with more nested data? Is there a way without splitting/flattening the POST data?

ymakux
/**
* Trim and filter every value in the nested array
*/
function filter(array &$array)
{
    array_walk_recursive($array, function (&$value) {
         $value = filter_var(trim($value), FILTER_SANITIZE_STRING);
    });

    return $array;
}

/**
* Get filtered POST data
*/
function post(){
  return filter($_POST);
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

grouping multi-dimensional array in PHP

From Dev

puzzled by format of PHP multi dimensional array

From Dev

php convert a string into multi dimensional array

From Dev

To build a multi-dimensional json array in PHP

From Dev

php filter array values and remove duplicates from multi dimensional array

From Dev

Multi-dimensional Array - PHP - CodeIgniter

From Dev

Multi-Dimensional Filtering

From Dev

Sort a multi-dimensional Array in PHP

From Dev

insert a multi-dimensional array to mysql with PHP

From Dev

Dynamic merge on multi-dimensional array in php

From Dev

PHP - Switch on a multi dimensional array

From Dev

Comparing values in PHP multi-dimensional array

From Dev

PHP multi dimensional array intersect

From Dev

multi level dimensional array in php

From Dev

post two dimensional array in php

From Dev

Split Multi Dimensional array into single array :PHP

From Dev

Filtering multi-dimensional array based on another array elements

From Dev

Convert Multi dimensional array PHP

From Dev

PHP array unique on multi dimensional array/object

From Dev

PHP create multi dimensional array

From Dev

modifying multi dimensional array in PHP

From Dev

post two dimensional array in php

From Dev

Split Multi Dimensional array into single array :PHP

From Dev

PHP Search Multi Dimensional Array

From Dev

How to convert multi dimensional array to single dimensional array in php ?

From Dev

PHP Convert Multi-dimensional Array to Query String for curl POST

From Dev

how to multiply array in multi dimensional array in php

From Dev

Filtering multi-dimensional array

From Dev

Multi dimensional associative array in php

Related Related

HotTag

Archive