学年的自定义规则Form_Validation(例如:2001/2002)

时间:2014-04-23 16:25:38

标签: php codeigniter validation

我是新手

我遇到了问题,我想在学年的表单验证中自定义规则

有一个输入框,用户必须输入如下内容: 2001/2002 2013/2014 2017/2018 例外

在我的控制器代码中:

$this->form_validation->set_rules('nama_tahun_ajaran','nama_tahun_ajaran','required|max_length[9]|callback_valid_name');

function $valid_name($nama_tahun_ajaran){
// RIGHT HERE I'M STILL Have no Idea to makes a rule
}

我希望你明白我的要求 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式来匹配字符串,然后进行简单比较以确保年份在一年之内并且处于有效顺序中。

function valid_name($nama_tahun_ajaran = null)
{
    // Regex patterns for year and forward slash
    $year  = '((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])';
    $slash = '(\\/)';

    // Does the inputted value matche the regex?
    // Checks it's in the form 'year/year'. E.g. '2010/2012'.
    if (preg_match_all("/".$year.$slash.$year."/is", $nama_tahun_ajaran, $matches))
    {
        // Get the years from the string
        $first_year  = $matches[1][0];
        $second_year = $matches[3][0];

        // Is the first year one less than the second year?
        if (($first_year + 1) == $second_year)
        {
            return TRUE;
        }               
    }
    return FALSE;
}

这仅适用于1000-2999范围内的年份。