diff --git a/forms/class/forms.php b/forms/class/forms.php index 20b00dd..616711d 100644 --- a/forms/class/forms.php +++ b/forms/class/forms.php @@ -611,8 +611,23 @@ function _cleanvar($var) if ($field['title'] == 'captcha') $valid = (empty($_SESSION['captcha_keystring']) || empty($fld_val) || $_SESSION['captcha_keystring'] != $fld_val) ? false : true; // если файл elseif ($field['type'] == 'file') $valid = ($_FILES['form-' . $alias_id]['size'][$field_id] / 1024 / 1024) <= $field['setting']; - // если передали регулярку - elseif ($field['setting'][0] == '/') $valid = preg_match($field['setting'],$fld_val) === 1 ? true : false; + // Если передали регулярку + elseif (isset($field['setting'][0]) && $field['setting'][0] == '/') { + $valid = false; // Изначально считаем, что валидности нет + + // Если $fld_val - массив, проверяем каждое значение + if (is_array($fld_val)) { + foreach ($fld_val as $value) { + if (preg_match($field['setting'], $value) === 1) { + $valid = true; // Если хотя бы одно значение валидно + break; // Выходим из цикла + } + } + } else { + // Если это одно значение, просто проверяем его + $valid = preg_match($field['setting'],$fld_val) === 1 ? true : false; + } + } // если константу elseif (isset($field['setting']) && is_string($field['setting']) && defined($field['setting'])) {