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'发送的值无效.
让我们尝试一些深思熟虑的事情。
你想像这样使用它:
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 并用验证错误填充它。没有使用全局变量。