Codeigniter验证规则帮助

San*_*yil 2 php validation codeigniter

我想验证我的CI应用程序中的landphone和手机字段.我已将验证规则设置为整数,但用户无法输入由" - "分隔的值.如果我使用"文本"类型,用户也可以输入字母......我如何解决这个问题....我希望用户在字段中输入" - "和"+"值而不是任何其他文本

码:

$this->form_validation->set_rules('land_phone','Land Phone','trim|required|integer|min_length[1]|max_length[50]|xss_clean');
$this->form_validation->set_rules('mobile_phone','Mobile Phone','trim|required|integer|min_length[1]|max_length[50]|xss_clean');
Run Code Online (Sandbox Code Playgroud)

DrC*_*sos 7

由于您定义integer为验证规则,因此无法输入带" - "的数字.因此,验证将失败.您需要使用RegEx,以便创建更复杂的验证.有关详细信息,请参阅CI手册中有关验证的主题.

您的验证规则:

$this->form_validation->set_rules('foo', 'Number', 'callback_number_validation');
Run Code Online (Sandbox Code Playgroud)

请注意关键字如何callback_用于识别CI验证功能.

你的回调函数:

//$str will be the value you want to verify
function number_validation($str) {
    return preg_match("your_regex", $str) ? true: false;
}
Run Code Online (Sandbox Code Playgroud)