PHP表单验证功能

Bar*_*rbs 7 php regex validation function

我目前正在编写一些PHP表单验证(我已经验证了客户端)并且有一些重复的代码,我认为它们可以在一个很好的小PHP函数中运行良好.但是我无法让它工作.我确定这只是语法问题,但我无法确定它.

任何帮助赞赏.

//Validate phone number field to ensure 8 digits, no spaces.
if(0 === preg_match("/^[0-9]{8}$/",$_POST['Phone']) {
    $errors['Phone'] = "Incorrect format for 'Phone'";
}

if(!$errors) {
    //Do some stuff here....
}
Run Code Online (Sandbox Code Playgroud)

我发现我正在编写验证代码,我可以通过创建函数来节省一些时间和一些代码行.

//Validate Function
function validate($regex,$index,$message) {
    if(0 === preg_match($regex,$_POST[$index])) {
        $errors[$index] = $message;
    }
Run Code Online (Sandbox Code Playgroud)

并称之为......

validate("/^[0-9]{8}$/","Phone","Incorrect format for Phone");
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到为什么这不起作用?

注意我在尝试触发错误时禁用了客户端验证,因此我为'Phone'发送的值无效.

gvi*_*iew 4

让我们尝试一些深思熟虑的事情。

你想像这样使用它:

if (validate(...)) {
    // It's ok
}
Run Code Online (Sandbox Code Playgroud)

那么我建议这样:

function validate($regex, $index, $message, &$errors) {     
    if (isset($_POST[$index]) && 1 === preg_match($regex, $_POST[$index])) {
        return true;            
    }
    $errors[$index] = $message; 
    return false;        
}
Run Code Online (Sandbox Code Playgroud)

现在您有机会转储错误时的验证,或者您可以链接这些传递 $errors 并用验证错误填充它。没有使用全局变量。