在codeigniter中定义回调函数

时间:2015-11-03 11:28:02

标签: php codeigniter

我正在尝试为strn设置错误验证,并且需要遵循此严格规则,但由于我不知道如何使用回调功能,任何人都可以帮我设置相同的表单验证?

$this->form_validation->set_rules('strn', 'STRN', 'trim|callback_strn_check');

严格的规则是: -

  • STRN是一个唯一的15位数字。

  • 前十位数字是Assessee的PAN号码

  • 11th&第12个是服务税代码(它是ST或SD)

另一个重点是该字段不是强制性的,但如果用户填写不当,则应收到表单错误。

2 个答案:

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