Мне нужно настроить валидацию для идентификаторов студента, а родная библиотека CI не разрезает ее, поэтому я расширил. У меня, однако, проблема с работой, и я не совсем понимаю, где я работаю. Это моя первая трещина в REGEX, так что легко и просто. Вот мой код:Расширение библиотеки проверки - CI2
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Form_validation extends CI_Form_validation
{
public function is_valid_student_id($str)
{
if(strlen($str) > 9)
{
$this -> set_message('is_valid_student_id', 'A-Number can not be over 9 characters');
return FALSE;
}
elseif(strlen($str) < 9)
{
$this -> set_message('is_valid_student_id', 'A-Number can not be under 9 characters');
return FALSE;
}
elseif((($str[0]) !== 'a') && (($str[0]) !== 'A'))
{
$this -> set_message('is_valid_student_id', 'A-Number must begin with the letter "A"');
return FALSE;
}
elseif(ctype_alpha($str[0]))
{
if(is_numeric(substr($str, 1, strlen($str) - 1)))
{
return TRUE;
}
else
{
$this -> set_message('is_valid_student_id', 'A-Number must have 8 digits 0 - 9');
return FALSE;
}
}
else
{
$this -> set_message('is_valid_student_id', 'A-Number must begin with the letter "A"');
return FALSE;
}
}
}
Затем использовать проверку я делаю это:
if (!$this->input->post('student') == 'yes') {
$this->form_validation->set_rules('anum', 'A Number', 'required|is_valid_student_id|exact_length[9]');
}
Я Следование этим good /// tutorials, но я все еще немного запутался. Любая помощь будет большой. Спасибо
Для этого правила нужно просто запустить одиночное 'preg_match()', и если это не удается, укажите в своем сообщении об ошибке требования к числу. Это много дополнительной логики для проверки одной строки. –
Я абсолютно с тобой согласен с этим! Однако мой босс не делает - lol. Он хочет, чтобы ученик точно знал, почему их студенческий идентификатор не работает. С моим уровнем знаний PHP это был самый простой способ получения этого пользовательского требования. По крайней мере, сейчас прогнозируется каждый беспорядок на части студентов, когда дело доходит до ввода текста. –