PHP-在某些字段上验证

时间:2012-06-19 09:40:33

标签: php

我有一个表单,在表单中只有少数字段是必填字段。当字段不是必填字段时,它不应检查空数据验证。如果非必填字段包含数据,那么它应该检查数据,验证应该只有在数据出现时才会发生。

我的下面代码检查所有字段。例如:在下面的代码中说电话不是强制性的,如何更改代码。

$validate = array(
    array($x, '/^[a-z\d ]{4,20}$/i', "Please enter valid name."),
    array($y, '/^[a-z\d ]{4,20}$/i', "Please enter a real category."),
    array($phone, '/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/' , "Please enter a valid phone number")
);

$error = '';
foreach ($validate as $validation)
{
    if (!preg_match($validation[1],$validation[0]))
    {
       $error .= $validation[2]; 
    }
}

if($error != '')
{
    echo $error;
    exit;
}

评论这篇文章,如果不清楚的话。

提前致谢!

2 个答案:

答案 0 :(得分:0)

如果您想检查是否已提交至少必填字段,您可以使用issetempty函数检查它们是否已设置并具有真值。

例如:

if ( isset($_POST['username'], $_POST['password']) && 
     ! empty($_POST['username']) && ! empty($_POST['password']) ) {
    // validation here
}

这将检查用户名和密码字段是否已提交并具有值,而例如,如果上述条件返回true,则不一定填写电子邮件字段。

答案 1 :(得分:0)

如果您事先知道必填字段,我建议您将它们分组并根据当前密钥进行测试。如果某个密钥不是强制性的但具有价值,那么您可以进行测试,否则请进行常规检查。

$error = '';
$mandatoryFields = array('key1', 'key2' 'key3');

foreach ($validate as $validation)
{
    if (!in_array($validation[0], $mandatoryFields) && strlen(trim($validation[0])) > 0) 
    {
        // There is data in a non mandatory field.
        // Perform your test.
    } 
    else {
        // Do your regular test.
        if (!preg_match($validation[1],$validation[0]))
        {
           $error .= $validation[2]; 
        }
    }
}

你可以尝试一下。

相关问题