2010-06-11 5 views
2

Comment puis-je valider un formulaire en utilisant regex dans codeiginiter. Je voudrais vérifier l'entrée contre:Validation de formulaires avec regex dans codeigniter

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

Je suppose que le meilleur moyen est dans une sorte de rappel. J'ai essayé un tas d'idées sur le web mais je n'arrive pas à travailler.

Répondre

2

Vous pouvez créer une fonction comme ceci:

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; 
    } 
} 

Dans votre contrôleur, vous pouvez l'utiliser comme:

if ($this->validateRegex($this->input->post('some_data'))) 
{ 
    // true, proceed with rest of the code..... 
} 
1

Que diriez-vous d'utiliser AJAX?

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

La fonction regex_check aurait un chèque typique regex en elle, comme

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

Vous ne permettrait la soumission réussie de formulaire si toutes les données sont validées.

Ces extraits de code devraient vous aider sur la piste à valider les données.

+0

grâce à la solution intéressante, bien que pas le plus Codeigniter centré –

15

message Vieux mais vous pouvez ajouter le regex directement dans la règle de validation d'entrée

$this->form_validation->set_rules()

Ajouter à fonction ci-dessus: regex_match[your regex]

1

ici est une solution complète soumettre à account/signup

dans le contrôleur 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 fonction de rappel également dans le contrôleur 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; 
     } 
}