在回调中使用preg_match进行表单验证不起作用

时间:2017-10-16 13:33:09

标签: php codeigniter callback codeigniter-3

我对我的codeigniter表单验证有疑问。我尝试验证名称的输入表单,以便在用户使用">?<*&%^$"之类的符号时生成错误。这是我的代码:

我的规则:

$this->load->library('form_validation');
$this->form_validation->set_rules('full_name', 'Name', 'trim|required|callback_name_check',
            array(

                'name_check' => '%s should not using symbols'
            )
    );

这是我的回调函数(我试图从我看到的最后一个例子中修改它,所以我认为问题就在这里)

public function password_check($str)
    {
       if (preg_match('#[<>?&%$#@]#', $str)) {
         return TRUE;
       }
       return FALSE;
    }

我尝试了另一个来自另一个StackOverflow回答的例子来使用/作为分隔符(像这样 - &gt; [/<>?&%$#@/]),但仍然不起作用。我很感激你的帮助感受:)

1 个答案:

答案 0 :(得分:0)

验证应

$this->load->library('form_validation');
$this->form_validation->set_rules('full_name', 'Name', 'trim|required|callback_name_check');

内部回拨功能

public function name_check($str)
{
    if (preg_match('#[<>?&%$#@]#', $str)) {
    {
        return TRUE;
    }
    else
    {
        #adding new validation error should be
        $this->form_validation->set_message('full_name', '%s should not using symbols'); # input field name should come to first
        return FALSE;
    }
}
  

注意:未验证您已发布的REGEX