Проверка букв в 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' );
}

какую бы проверку я мог занять?

Author: Mariano, 2016-09-22

1 answers

Используя alpha в качестве первого правила, вы ограничиваете вход только буквами. С помощью этого правила вы запрещаете им вводить пробелы, запятые или точки. Вы должны удалить это правило:

$crud->set_rules( 'marca', 'Marca', 'callback_solo_letras' );

С другой стороны, регулярное выражение должно

  1. быть привязанным к началу текста с ^.
  2. разрешать только пробелы (так как \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]' );
    
 3
Author: Mariano, 2016-09-24 10:19:14