我如何 运行 PHP Preg_match 针对所有 POST 数据?

How can i run PHP Preg_match against all POST Data?

我有一个 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");
}

我怎样才能做到这一点?

您可以使用 array_walk_recursive to iterate over the entire $_POST array, testing each value with your preg_match 代码:

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