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



我有一个HTML表单,用户可以在其中提交信息,根据用户在表单中选择的选项数量,会发送不同数量的POST数据,有些是数组。

VARDUMP:的POST数据如下所示

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" } }

我希望对所有POST数据运行preg_match:

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

我怎样才能做到这一点?

您可以使用array_walk_recursive在整个$_POST数组上迭代,使用preg_match代码测试每个值:

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

最新更新