一个陈述中的多个条件

时间:2014-01-07 16:03:04

标签: php validation conditional

我在“名称”表单字段中添加了一些非常基本的验证。一般来说,实际验证名称是不可能的,但我想我至少可以验证它不是空的,大于2个字符(Al是我能想到的最短名称),而且这些字符不仅仅是空格

这是我正在使用的条件:

// Check length of name field
if(!isset($name) || $name < 2 || (strlen($name) > 0 && strlen(trim($name)) == 0)) {
    // Name field only spaces
    if((strlen($name) > 0 && strlen(trim($name)) == 0) || trim($name) == '') {
        $errors['name'] = "Please enter a real name...";
    }
    // Name too short
    else {
        $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
    }
    $msg_type = "error";
}

但是,当我使用有效名称运行时,我收到“名称太短”错误。我知道如何将条件组合起来是一个问题,但我无法弄清楚问题所在。

2 个答案:

答案 0 :(得分:2)

$name < 2不起作用。您正在尝试使用strlen($name) < 2

答案 1 :(得分:2)

嗯,有一个名为正则表达式的工具,人们为字符串匹配发明了它,它可以非常方便地用于像你这样的验证案例。如果你想验证一个单词,假设至少有2个字符的长度,你可以执行以下操作:

if(!preg_match('/\b\w{2,}/', $name)) {
    $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
}

其中: \ b:字边界 \ w:字符 {2,}:字符

的两次或多次