1

我需要验证提交的表单数据:

  1. 检查字段是否为空。
  2. 继续验证非空数据。

x – 只允许空格、下划线、aplha 数字字符。y - 检查它是否是图像。

我正在使用下面的代码,它不起作用。它不是验证和打印错误。

<?php
$validate = array(
    '/^[a-z\d ]{4,20}$/i' => array('$x' => 'Please enter valid name.'),
    '/^[a-z\d ]{4,20}$/i' => array('$y' => 'Please enter a real category.')
);

$error = '';

foreach ($validate as $key => $field)
{
    if (preg_match($key,$field[0]))
    {
       $error.= $field[0];
    }
}

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

2 回答 2

1

使用filter_var函数。你有你需要的选项。

于 2012-06-19T08:40:21.597 回答
1

您正在将您的正则表达式与您的错误消息进行匹配,而不是您提交的字符串($x 和 $y)。

你可能会做这样的事情:

$validate = array(
    '/^[a-z\d ]{4,20}$/i' => array($x, "Please enter valid name."),  //change here
    '/^[a-z\d ]{4,20}$/i' => array($y, "Please enter a real category.") //change here
);

$error = '';
foreach ($validate as $key => $field)
{
    if (preg_match($key,$field[0]))
    {
       $error.= $field[1]; //change here
    }
}

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

更新

我会怎么做。

$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;
}

$validatenow 是您的字段数组,每个字段都用它自己的数组表示,其中包含错误消息、正则表达式以匹配它并提交主题。

于 2012-06-19T08:44:25.980 回答