Проверка букв в Codeigniter
я разрабатываю приложение в codeigniter при поддержке Grocery CRUD
, но при выполнении проверки оно не распознает его, мне нужно, чтобы поле было проверено, чтобы принимать только алфавитные символы, а также точки, запятые и пробелы, но оно не работает:
public function solo_letras($cadena)
{
$patron = '/[a-zA-Z,.\s]*$/';
if( !preg_match( $patron, $cadena ) ) {
return FALSE;
}
else {
return TRUE;
}
}
строки кода в функции Grocery CRUD, в которой я вызываю функцию solo_letras
if( $this->input->post( 'marca' ) != null ) {
$crud->set_rules( 'marca', 'Marca', 'alpha|callback_solo_letras' );
}
какую бы проверку я мог занять?
1 answers
Используя alpha
в качестве первого правила, вы ограничиваете вход только буквами. С помощью этого правила вы запрещаете им вводить пробелы, запятые или точки. Вы должны удалить это правило:
$crud->set_rules( 'marca', 'Marca', 'callback_solo_letras' );
С другой стороны, регулярное выражение должно
- быть привязанным к началу текста с
^
. - разрешать только пробелы (так как
\s
разрешает любые пробелы или[ \t\r\n\f]
)
/^[a-z ,.]*$/i
И функции осталось:
public function solo_letras($cadena)
{
return preg_match( '/^[a-z ,.]*$/i', $cadena );
}
Однако, гораздо проще использовать правило regex_match[/regex/]
$crud->set_rules( 'marca', 'Marca', 'regex_match[/^[a-z ,.]*$/i]' );
-
Или если вы хотите разрешить
ñ
и другие буквы испанского языка:$crud->set_rules( 'marca', 'Marca', 'regex_match[/^[a-zñáéíóúüA-ZÑÁÉÍÓÚÜ ,.]*$/u]' );
-
Или любая буква любого алфавита (общая категория Letter Unicode).
$crud->set_rules( 'marca', 'Marca', 'regex_match[/^[\p{L} ,.]*$/u]' );