Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 学年自定义规则表的确认(Ex:2001/2002)_Php_Codeigniter_Validation - Fatal编程技术网

Php 学年自定义规则表的确认(Ex:2001/2002)

Php 学年自定义规则表的确认(Ex:2001/2002),php,codeigniter,validation,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_

我是个新手

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

有一个输入框,用户必须这样键入:2001/20022013/20142017/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
}
我希望你能理解我的要求

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

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范围内的年份