为什么switch语句总是会变为默认值?

时间:2012-12-13 23:35:01

标签: php codeigniter

好的我查了一切,甚至尝试修剪我的输入。但无论我做什么,我的switch语句都默认为默认语句。 但是当alphanum结果为FALSE时,它会显示错误消息ALONG以及默认错误消息。它最终显示出它们两个......这没有意义,因为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 ..如果alphanum出现为false(在这种情况下为true),它将显示错误消息。但是,如果我键入“lilmousiee”,它不会显示错误消息,因为它传递了preg_match表达式。 但无论我输入什么,它总是显示“无效模式”错误消息。有时,当我输入“lilmousiee 6”时,它显示AND和alphanum错误消息,因为它不允许空格。它是如何仍然同时显示默认值和另一个默认值?..这里的东西不正确......

1 个答案:

答案 0 :(得分:0)

@femtoRgon是对的!我有一个match_pattern [alpha_num_space],但没有case语句,所以它也是默认的! 因此,它有时会显示两条错误信息!

谢谢!