Проверка форм с помощью регулярного выражения в codeigniter - PullRequest
2 голосов
/ 11 июня 2010

Как я могу проверить форму, используя регулярное выражение в codeiginiter. Я хотел бы проверить ввод по:

^([0-1][0-9]|[2][0-3]):([0-5][0-9])$

Я предполагаю, что лучший способ - это обратный вызов. Я попробовал кучу идей в Интернете, но я не могу заставить их работать.

Ответы [ 4 ]

15 голосов
/ 28 июля 2011

Старая запись, но вы можете добавить регулярное выражение непосредственно в правиле проверки ввода

$this->form_validation->set_rules()

Добавить к функции выше: regex_match[your regex]

2 голосов
/ 11 июня 2010

Вы можете создать такую ​​функцию:

function validateRegex($input)
{
  if (preg_match('/^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/', $input))
  {
    return true; // it matched, return true or false if you want opposite
  }
  else
  {
    return false;
  }
}

В вашем контроллере вы можете использовать его как:

if ($this->validateRegex($this->input->post('some_data')))
{
  // true, proceed with rest of the code.....
}
1 голос
/ 01 февраля 2013

вот полное решение, отправленное на account/signup

в контроллере account:

function signup(){
    if($_POST){
        $this->form_validation->set_rules('full_name', 'Full Name', 'required|min_length[3]|max_length[100]');
        $this->form_validation->set_rules('email_address', 'Email Address', 'required|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'required|callback_check_password');

        if ($this->form_validation->run() == FALSE){            
            echo validation_errors();       
        }
        else{
          // form validates, now can do stuff such as insert into database 
          // and show the user that they successfully signed up, i.e.,:
          // $this->load->view('account/signup_success');
       }
    }
} 

check_password функция обратного вызова также в account контроллере:

function check_password($p){ 
      $p = $this->input->post('password');
      if (preg_match('/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8}/', $p)) return true;
      // it matched, see <ul> below for interpreting this regex   
      else{
        $this->form_validation->set_message('check_password', 
            '<span class="error">
                <ul id="passwordError">
                    <li> Password must be at least:</li>
                    <li> 8 characters</li>
                    <li> 1 upper, 1 lower case letter</li>
                    <li> 1 number</li>  
                </ul>               
            </span>');
        return false;
      } 
}
1 голос
/ 11 июня 2010

Как насчет использования AJAX?

$("form").submit(function(e) {
    e.preventDefault();
    $.post("<?php echo base_url(); ?>regex_check", { username: $("#username").val() }, function (data) {
        alert(data);
    });

Функция regex_check будет иметь типичную проверку регулярных выражений, например

function regex_check(){
    $this->get->post('username');
    if(eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9-] +\.[a-zA-Z.]{2,5}$', $username)){
       return TRUE;}else{return FALSE;}
    }

Вы разрешите только успешную отправку формы, если все данные

Эти фрагменты кода должны помочь вам на пути к проверке данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...