具有多个字段和正则表达式的单个PHP函数

问题描述 投票:0回答:1

我需要创建一个单一的函数,它接入我的正则表达式和表单字段来验证多个字段。这就是我所拥有的:

if (preg_match ($fname_regex, $fname)) {
            $valid_fname = 1;
        } else {
            echo $fname_error_message;
        }

        if (preg_match ($lname_regex, $lname)) {
            $valid_lname = 1;
        } else {
            echo $lname_error_message;
        }

        if (preg_match ($phone_regex, $phone)) {
            $valid_phone = 1;
        } else {
            echo $phone_error_message;
        }

        if (preg_match ($city_regex, $city)) {
            $valid_city = 1;
        } else {
            echo $city_error_message;
        }

        if (preg_match ($state_regex, $state)) {
            $valid_state = 1;
        } else {
            echo $state_error_message;
        }

        //if all are fields are valid, go forward.
        if ($valid_fname && $valid_lname && $valid_phone && $valid_city && $valid_state) {
            $output_form = 0;
        } else {
            echo "<p>One of your fields is invalid. Please check and re-submit.</p>";
        }

但我需要有一个函数来执行此操作,只返回true或false。我不知道如何创建一个需要多个字段和多个正则表达式的函数。有帮助吗?

php regex function
1个回答
1
投票

您可以传递有关要验证的信息的数组。该函数还可以存储失败的内容。

这是一个例子:

function validate_form($infos, &$errors = []) {
    $errors = [] ;
    foreach ($infos as $name => $info) {
        if (!preg_match ($info['regexp'], $info['value'])) {
            $errors[$name] = $info['error'] ;
        }
    }
    return empty($errors) ; // returns true/false
}

$infos = [
    'fname' => ['regexp' => $fname_regex, 'value' => $fname, 'error' => $fname_error_message],
    'lname' => ['regexp' => $lname_regex, 'value' => $lname, 'error' => $lname_error_message],
    'phone' => ['regexp' => $phone_regex, 'value' => $phone, 'error' => $phone_error_message],
    'city'  => ['regexp' => $city_regex,  'value' => $city,  'error' => $city_error_message],
    'state' => ['regexp' => $state_regex, 'value' => $state, 'error' => $state_error_message],
];
$errors = [] ;
if (!validate_form($infos, $errors)) {
    echo "<p>One of your fields is invalid. Please check and re-submit.</p>";
    print_r($errors) ;
}
else {
   echo "<p>OK, form validated!</p>";
}
© www.soinside.com 2019 - 2024. All rights reserved.