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