Php 一条语句中包含多个条件

Php 一条语句中包含多个条件,php,validation,conditional,Php,Validation,Conditional,我正在向“name”表单字段添加一些非常基本的验证。一般来说,不可能真正验证一个名称,但我想我至少可以验证它不是空的,大于2个字符(Al是我能想到的最短名称),并且这些字符不仅仅是空的 以下是我使用的条件: // Check length of name field if(!isset($name) || $name < 2 || (strlen($name) > 0 && strlen(trim($name)) == 0)) { // Name field

我正在向“name”表单字段添加一些非常基本的验证。一般来说,不可能真正验证一个名称,但我想我至少可以验证它不是空的,大于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";
}
//检查名称字段的长度
如果(!isset($name)| |$name<2 | |(strlen($name)>0&&strlen(trim($name))==0)){
//仅名称字段空格
如果((strlen($name)>0&&strlen(trim($name))==0)| | trim($name)==''){
$errors['name']=“请输入真实姓名…”;
}
//名字太短
否则{
$errors['name']=“你确定”.htmlspecialchars($name)。“你的名字是什么?”;
}
$msg_type=“错误”;
}

但是,当我使用有效的名称运行此程序时,会出现“名称太短”错误。我知道如何组合条件肯定有问题,但我不知道问题出在哪里。

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

好吧,有一种叫做regex的工具,人们发明了它来进行字符串匹配,它可以非常方便地用于像您这样的验证案例。如果要验证一个单词,比如说至少有2个字符的长度,可以执行以下操作:

if(!preg_match('/\b\w{2,}/', $name)) {
    $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
}
if(!preg_match('/\b\w{2,}/',$name)){
$errors['name']=“你确定”.htmlspecialchars($name)。“你的名字是什么?”;
}
其中: \b:词界 \w:字字符
{2,}:两次或两次以上的单词字符

嗯,有一种叫做regex的工具,人们发明了它来进行字符串匹配,它可以非常方便地用于像您这样的验证案例。如果要验证一个单词,比如说至少有2个字符的长度,可以执行以下操作:

if(!preg_match('/\b\w{2,}/', $name)) {
    $errors['name'] = "Are you sure <strong>".htmlspecialchars($name)."</strong> is your name?";
}
if(!preg_match('/\b\w{2,}/',$name)){
$errors['name']=“你确定”.htmlspecialchars($name)。“你的名字是什么?”;
}
其中: \b:词界 \w:字字符
{2,}:单词字符有两次或两次以上的检查(
(strlen($name)>0&&strlen(trim($name))==0)两次检查(
)<2,}:。为什么?实际上有一些人的名字只有一个字母。@kojiro我猜他的目标受众不是亚洲人>。在每个条件周围总是使用
()
是一个好习惯$name<2正在检查它的值是否小于2,而不是字符号你使用相同的检查(
(strlen($name)>0&&strlen(trim($name))==0)
)两次。为什么?实际上有一些人的名字只有一个字母。@kojiro我猜他的目标受众不是亚洲人>。