我正在尝试将一些验证规则应用于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'
),
毕竟,我没有得到任何验证错误。 我没有遵循正确的程序吗? 或者正则表达式代码应该用什么来验证这种类型的数据?
答案 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;
}
}
我发现如果我们将回调应用于验证,我们必须遵循一些规则。
我在application / config / form_validation.php创建了配置验证数组
将回调函数放在我调用该验证的控制器上。
找到创建正则表达式并测试它的链接。 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"));