【问题标题】:String validation in CodeIgniter using callback rulesCodeIgniter 中使用回调规则的字符串验证
【发布时间】:2016-11-22 06:53:20
【问题描述】:

我想使用 CodeIgniter 的表单验证库检查字符串是否有效。

如果输入字符串在这个集合中有9个数字+1个字符:[xXvV]或者字符串为空,则认为有效。 (例如:“123456789X”、“987654321v”、“”)。我使用preg_match() 实现了一个回调规则,但无济于事。

在我的控制器中设置规则:

$this->form_validation->set_rules('nic', 'NIC', 'trim|xss_clean|callback_checkNIC');

这是我的回调函数:

public function checkNIC($nic){
        $reg = '/^(\d\d\d\d\d\d\d\d\d)[xXvV]$/';

        if(preg_match($reg, $nic) || $nic == '') {
            return TRUE;
        }
        else {
            $this->form_validation->set_message('checkNIC', 'The NIC is not valid');
            return FALSE;
        }
    }

有什么想法吗?

【问题讨论】:

  • 请更具体。它怎么不工作?有什么错误吗?你在哪里定义回调?在同一个控制器中?
  • 我在同一个控制器中定义了回调。
  • 你怎么说它失败了?回调是否被调用?!

标签: php regex codeigniter validation


【解决方案1】:

将此方法添加到您正在执行验证的 controller 类中。或者如果你想把它放在其他地方,请确保它是callable

public function checkNIC($nic)
{
    $this->form_validation->set_message('checkNIC', 'The NIC is not valid');

    return $nic === '' || (bool) preg_match('/^\d{9}[xXvV]$/', $nic);
}

看看:
https://3v4l.org/X3DhC

【讨论】:

  • 您能检查一下checkNIC('fdg')checkNIC('123456789X') 的输出吗?看看:3v4l.org/X3DhC
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 2012-11-19
  • 2011-03-19
  • 1970-01-01
相关资源
最近更新 更多