【问题标题】:How to solve Codeigniter validation problem with YYYY/MM/DD date format如何使用 YYYY/MM/DD 日期格式解决 Codeigniter 验证问题
【发布时间】:2021-09-21 07:18:50
【问题描述】:

在 codeigniter 框架中,我正在尝试发送这样的日期(Jalali Date):

/* html */
<input id="start_date" name="start_date" type="text" value="1400/05/29" />
/* php */
/* validation lib */
$this->load->library('form_validation');
/* validation rules */
$this->form_validation->set_rules('start_date', 'Start Date', 'trim|required|exact_length[10]|regex_match[/^([0-9]{4})\/((0[1-9])|(1[0-2]))\/((0[1-9])|([1-2][0-9])|(3[0-1]))$/]');

但它既不工作也不返回错误,而当我删除正则表达式验证时它工作。下面的方法工作正常并返回 true :

<?= (bool) preg_match('/^([0-9]{4})\/((0[1-9])|(1[0-2]))\/((0[1-9])|([1-2][0-9])|(3[0-1]))$/', '1400/05/29'); ?>

可能是因为“|”标记?如果是,应该如何解决?

你能帮帮我吗? 谢谢。

【问题讨论】:

  • 我使用了 callback_function 并且成功了。

标签: regex forms codeigniter validation


【解决方案1】:
$this->form_validation->set_rules('start_date','StartDate','callback_checkDateFormat');

function checkDateFormat($date) {

if (preg_match("/[0-31]{2}/[0-12]{2}/[0-9]{4}/", $date)) {

if(checkdate(substr($date, 3, 2), substr($date, 0, 2), substr($date, 6, 4)))
  return true;
else
  return false;
} else {
  return false;
}
}

【讨论】:

  • 在控制器中使用回调函数
猜你喜欢
  • 2017-04-07
  • 2014-01-18
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
相关资源
最近更新 更多