我是新手
我遇到了问题,我想在学年的表单验证中自定义规则
有一个输入框,用户必须输入如下内容: 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
}
我希望你明白我的要求 感谢
答案 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范围内的年份。