Как я могу запустить PHP Preg_match против всех данных POST? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть HTML-форма, где пользователи отправляют информацию, в зависимости от того, сколько опций пользователь выбирает в форме, иное количество отправленных POST-данных различно, некоторые в виде массива.

Данные POST выглядят следующим образомс VARDUMP:

array(8) { ["animal"]=> string(7) "test123" ["name"]=> string(5) "test" ["goat"]=> string(7) "farm" ["animal2"]=> string(8) "animal2" ["option"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "1" } ["number"]=> array(2) { [0]=> string(1) "s" [1]=> string(1) "3" } ["option4"]=> array(1) { [0]=> string(1) "1" } ["grass"]=> array(1) { [0]=> string(1) "3" } }

Я хочу запустить свой preg_match для всех данных POST:

if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $data)) || (preg_match("/\\s/", $data))
{
    exit("Illegal characters found");
}

Как мне этого добиться?

1 Ответ

1 голос
/ 24 октября 2019

Вы можете использовать array_walk_recursive для итерации по всему массиву $_POST, проверяя каждое значение с помощью кода preg_match:

array_walk_recursive($_POST, function ($v) {
    if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $v) || preg_match("/\\s/", $v)) {
        exit("Illegal characters found");
    }
});
...