PHP空和数据验证

PHP空和数据验证,php,validation,Php,Validation,当用户提交表单时,我检查空验证和数据验证 例如:在数据中,第一个字段是name,我将检查用户是否输入了除alpha字符以外的任何其他字符。如果用户已输入,则将显示一条错误消息。name应至少包含4个字符,最多包含20个字符 我正在使用此代码,但它工作不正常。如何检查正则表达式 $validate = array("Category"=>"$productCategory", "Name" => "$productName"); $error = ''; foreach ($val

当用户提交表单时,我检查空验证和数据验证

例如:在数据中,第一个字段是name,我将检查用户是否输入了除alpha字符以外的任何其他字符。如果用户已输入,则将显示一条错误消息。name应至少包含4个字符,最多包含20个字符

我正在使用此代码,但它工作不正常。如何检查正则表达式

$validate = array("Category"=>"$productCategory", "Name" => "$productName");

$error = '';

foreach ($validate as $key => $field) {

    if (preg_match('/^[a-z\d ]{4,20}$/i', $$field)) {
       echo $error .= $field;
    }
}

提前谢谢

您在preg_匹配中有一个输入错误,您键入的是
$$field
(2x$)而不是
$field
,您的正则表达式很好,它将匹配:

 - a character between a - z (case insensitive)
or
 - a digit between 0 - 9
or 
 - a "space" character.
更新代码以回答@Andrius Naruševičius评论

$validate = array("Category" => $productCategory, "Name" => $productName);
$error = '';
foreach ($validate as $key => $field)
{
    if (preg_match('/^[a-z\d ]{4,20}$/i',$field))
    {
       $error.= $field;
    }
}

if($error)
{
    echo $error;
    exit;
}

您在preg_匹配中有一个输入错误,您键入的是
$$field
(2x$)而不是
$field
,您的正则表达式很好,它将匹配:

 - a character between a - z (case insensitive)
or
 - a digit between 0 - 9
or 
 - a "space" character.
更新代码以回答@Andrius Naruševičius评论

$validate = array("Category" => $productCategory, "Name" => $productName);
$error = '';
foreach ($validate as $key => $field)
{
    if (preg_match('/^[a-z\d ]{4,20}$/i',$field))
    {
       $error.= $field;
    }
}

if($error)
{
    echo $error;
    exit;
}
你是说:

$validate = array("Category"=>$productCategory, "Name" => $productName);

foreach ($validate as $key => $field) {

    if (preg_match('/^[\w\d]{4,20}$/i',$field)) {
       echo $error .= $field;
    }
}
你是说:

$validate = array("Category"=>$productCategory, "Name" => $productName);

foreach ($validate as $key => $field) {

    if (preg_match('/^[\w\d]{4,20}$/i',$field)) {
       echo $error .= $field;
    }
}


请提供输入、输出和预期输出。名称中是否允许使用重音字符或其他Unicode字符?另外,您有
$$field
而不是
$field
我发现此行
echo$error.=$field非常奇怪。有人能解释它的逻辑吗?@Andrius Naruševičius:没有,我们都错过了:)更新了我的答案,以显示在此上下文中使用$error的正确方式。请提供输入、输出和预期输出。是重音字符还是其他Unicode字符,允许在名称中使用?另外,您有
$$field
而不是
$field
我发现这行
echo$error.=$field非常奇怪。有人能解释它的逻辑吗?@Andrius Naruševičius:没有,我们都错过了:)更新了我的答案,以显示在这种情况下使用$error的正确方式。一个有效名称可以有空格a-z、a-z和0-9。在哪里添加错误消息。比如,我有10个regex和10个feild,我如何在这个逻辑中使用它。提交表单时,如果出现5个错误,则应向用户显示所有。@user1415759已删除\w并在正则表达式中添加了a-z(\w允许使用what your need+下划线字符)。第二,它将打印所有5个错误并退出代码,发生错误后您不需要继续执行…:我写了一个更新,检查您检查我的代码。如何验证空字段。注意:一个有效的名称可以有空格a-z、a-z和0-9。注意:在何处添加错误消息。例如,我有10个regex和10个feild,我如何在这个逻辑中使用它。提交表单时,如果出现5个错误,则应向用户显示所有。@user1415759已删除\w并在正则表达式中添加了a-z(\w允许使用what your need+下划线字符)。第二,它将打印所有5个错误并退出代码,您不需要在错误发生后继续执行…:我写了一个更新,检查您检查我的代码。如何验证空字段。