我正在尝试为strn
设置错误验证,并且需要遵循此严格规则,但由于我不知道如何使用回调功能,任何人都可以帮我设置相同的表单验证?
$this->form_validation->set_rules('strn', 'STRN', 'trim|callback_strn_check');
严格的规则是: -
STRN是一个唯一的15位数字。
前十位数字是Assessee的PAN号码
11th&第12个是服务税代码(它是ST或SD)
另一个重点是该字段不是强制性的,但如果用户填写不当,则应收到表单错误。
答案 0 :(得分:1)
试试这个,
$this->form_validation->set_rules('strn', 'STRN','trim|max_length[15]|min_length[15]callback_strn_check');
function strn_check($num){
if(strlen($num) != 15){
return false;
} else if(substr($num, -2) == "SD" || substr($num, -2) == "ST") {
$ten = substr($num, 0, 10);
if(ctype_digit($ten))
return true;
return false;
} else {
return false;
}
}
修改强>
前10个字符与pan
相同,你可以这样做,
function strn_check($num){
if(strlen($num) != 15){
return false;
} else if(substr($num, -2) == "SD" || substr($num, -2) == "ST") {
$ten = substr($num, 0, 10);
if($this->input->post("pan") == $ten)
return true;
return false;
} else {
return false;
}
}
如果您愿意,可以使用strtolower()
,如果案例对验证没有任何影响。截至目前,它仅适用于大写字母(最后2个字符)。
答案 1 :(得分:0)
我尝试了上面给出的答案并修复了一些错误,现在它的工作绝对完美。 这是代码: -
function strn_check($num)
{
if($num != "")
{
if(strlen($num) != 15)
{
return false;
}
else if(substr($num, 10,12) != "SD" || substr($num, 10,12) != "ST")
{
$ten = substr($num, 0, 10);
if($this->input->post("pan") != $ten)
return false;
}
else
{
return false;
}
}
else
{
return true;
}
}