我需要验证提交的表单数据:
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;
}
答案 0 :(得分:1)
使用filter_var功能。你有那里需要的选择。
答案 1 :(得分: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;
}
$validate
现在是一个字段数组,每个字段都用它自己的数组表示,包含错误信息,正则表达式匹配它和提交的主题。