好的,我查找了所有内容,甚至尝试修剪我的输入。但无论我做什么,我的 switch 语句都会默认为 default 语句。但是,当字母数字结果为 FALSE 时,它还会显示该错误消息以及默认错误消息。它最终显示了他们两个......这没有意义,因为 CASE 语句通常只是一个结果......
谁能告诉我为什么会这样?
function match_pattern($str, $pattern) {
$pattern = trim($pattern);
switch($pattern) {
case 'alphanum':
if( ! preg_match('/^[A-Za-z0-9]{1,}$/', $str))
{
//error message must be same as function name
$this->set_message('match_pattern', 'The %s field must only contain alpha-characters or numbers!');
return false; //failed
}
break;
case 'numeric':
if( ! preg_match('/^[0-9]{,}%/', $str)) {
$this->set_message('match_pattern', 'The %s field must only contain numeric characters!');
return false; //failed
}
break;
default:
$this->set_message('match_pattern', 'Invalid pattern');
return false;
}
return true; //passed
}
然后这是调用它的东西:
$this->form_validation->set_rules('username', 'Username', 'required|match_pattern[alphanum]|min_length[3]|max_length[25]|is_unique[user.username]');
是的,这是 CodeIgniter。如果字母数字显示为假(在这种情况下为真),它将显示错误消息。但是,如果我键入“lilmousiee”,它不会显示错误消息,因为它传递了 preg_match 表达式。但无论我输入什么,它总是显示“无效模式”错误消息。有时它会在我输入“lilmousiee 6”时显示和字母错误消息,因为它不允许空格。它如何仍然同时显示默认值和另一个?..这里有什么不对...