问题描述
在codeigniter框架中,我的代码是:
$this->form_validation->set_rules('mobile','Mobile Number','trim|numeric|exact_length[10]');
$this->form_validation->set_rules('email','Email Address','trim|valid_email');
$this->form_validation->set_rules('address','Address','trim');
if($this->form_validation->run() == TRUE){
$this->update_info();
}
以上代码会产生以下错误:
An uncaught Exception was encountered
Type: Error
Message: Call to undefined method CI_Form_validation::substr()
Filename: D:\xampp\htdocs\ci\system\libraries\Form_validation.php
Line Number: 1241
仅检查时,我尝试了两件事并已消除错误,但这不是正确的方法,因此我需要正确的解决方案。
- 从
valid_email
中删除了set_rules
之后,代码便开始工作了。 - 注释文件中的
Line Number: 1241
(我出错了)system\libraries\Form_validation.php
后,代码正常工作
即
1241: $str = self::substr($str,++$atpos).idn_to_ascii(self::substr($str,$atpos),INTL_IDNA_VARIANT_UTS46);
Codeigniter版本:3.1.11
PHP版本:7.4.2
解决方法
添加电子邮件助手
$this->load->helper('email');
以这种方式设置电子邮件验证
$this->form_validation->set_rules('email','Email','trim|required|valid_email|xss_clean');
用于手机号码验证
$this->form_validation->set_rules('mobile','Mobile Number ','required|regex_match[/^[0-9]{10}$/]'); //{10} for 10 digits number