如何在Codeigniter中验证地址字段

时间:2017-02-09 12:09:50

标签: php regex codeigniter validation

我正在尝试将一些验证规则应用于CodeIgniter中的表单数据。

预期允许的输出示例如下: 22-某个社会,某些街道,城市。 223399

我输入的内容用于检查验证: 42-some Society-3,some street。街机@ ## *

这是我用来验证地址的函数。

function addr_line1($addr_line1) {
    if (preg_match('/^[a-z0-9 .\-]+$/i',$addr_line1) !== FALSE)
        return TRUE;

    $this->form_validation->set_message('addr_line1', 'allow only space,comma,dot,numbers and alphabets.');

    return FALSE;
}

现在我将所有验证都放在 config / form_validation.php

array(
        'field' => 'addr_line1',
        'label' => 'Address Line One',
        'rules' => 'required|max_length[100]|callback_addr_line1'            
    ),

毕竟,我没有得到任何验证错误。 我没有遵循正确的程序吗? 或者正则表达式代码应该用什么来验证这种类型的数据?

3 个答案:

答案 0 :(得分:2)

改变
function addr_line1($addr_line1) {
    if (preg_match('/^[a-z0-9 .\-]+$/i',$addr_line1) !== FALSE)
        return TRUE;

    $this->form_validation->set_message('addr_line1', 'allow only space,comma,dot,numbers and alphabets.');

    return FALSE;
}

function addr_line1($addr_line1) {
    if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $addr_line1))
    {
       $this->form_validation->set_message('addr_line1', 'allow only space,comma,dot,numbers and alphabets.');
    }else{
          return true;
    }
}

注意: - 您可以将£$%&*()}{@#~?><>,|=_+¬-替换为不允许使用的字符

答案 1 :(得分:0)

在你的建议和帮助之后,我终于找到了正确的功能。

 function _validAddressCheck($addr_line1) {
    if (preg_match('/^[0-9a-zA-Z .,-]+$/',$addr_line1)){
         return TRUE;
    } else {
         $this->form_validation->set_message('_validAddressCheck', 'Only Allowed space, comma, dot, dash, numbers and alphabets.');

    return FALSE;
    }

}

我发现如果我们将回调应用于验证,我们必须遵循一些规则。

  1. 我在application / config / form_validation.php创建了配置验证数组

  2. 将回调函数放在我调用该验证的控制器上。

  3. 找到创建正则表达式并测试它的链接。 Link

答案 2 :(得分:0)

    <tr>
         <td>
            <label for="address">Address:</label></td><td>
            <textarea  name="address" placeholder="Write 
            something.."><?php echo set_value('address'); ?> </textarea>
        </td>
        <td>
            <p class="err_msg">
                <?php
                echo form_error('address');
                ?>
            </p>    
        </td>

在路线页面:-

$this->form_validation->set_rules('address','add','required|exact_length[18]',array('required'=>"Please Enter Address",'exact_length'=>"Please Enter At Least 10 Character"));