Кириллица не проходит валидацию

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Кириллица не проходит валидацию

Сообщение Drugpunker »

Здравствуйте.
Подскажите пжл, где ошибка в правиле.
Уже как только не прописывал.
Не хочет принимать кириллицу и всё тут.
На латинице пропускает.

qwerty_123 - так не ругается
йцукен_123 - так ругается
qwerty_йцукен_123 - так тоже ругается
:?:

Код: Выделить всё

// проверяет, что "name" начинается с буквы
// и содержит только буквенные символы, числовые символы и знак подчеркивания
            ['name', 'match', 'pattern' => '/^[a-zA-Zа-яА-Я]\w*$/i',
                'message' => 'может начинаться с буквы и содержать только буквы, цифры и знак подчеркивания'],
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Кириллица не проходит валидацию

Сообщение ElisDN »

Код: Выделить всё

'/^[a-zA-Zа-яА-ЯёЁ]\w*$/su'
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Кириллица не проходит валидацию

Сообщение Drugpunker »

ElisDN писал(а): 2020.07.17, 20:26

Код: Выделить всё

'/^[a-zA-Zа-яА-ЯёЁ]\w*$/su'
Да, спасибо.
Нашёл похожую тему, здесь же, с ответом от Вас же.
Про модификатор /u знать не знал.
Сделал так:

Код: Выделить всё

/^[а-яА-ЯёЁa-zA-Z]\w*$/u
Не мог найти в сети, потому что по запросам LIKE
Кириллица не проходит валидацию + Yii2...
нет нужной информации.
А вот
Русские буквы, валидация + Yii2
выдал что нужно. :)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Кириллица не проходит валидацию

Сообщение ElisDN »

Этот валидатор просто подставляет указанное регулярное выражение в preg_match.

Поэтому полезнее искать именно как:
php регулярное выражение кириллица
кириллица preg_match php
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Кириллица не проходит валидацию

Сообщение Drugpunker »

ElisDN писал(а): 2020.07.17, 21:46 Этот валидатор просто подставляет указанное регулярное выражение в preg_match.

Поэтому полезнее искать именно как:
php регулярное выражение кириллица
кириллица preg_match php
Понятно. Спасибо.

Но всё равно не работает оказывается.
Убрал ajax. Напрямую запускаю.
Ругается.
Отключил правило match.
Запись в бд добавляется, но знаками вопроса.
Похоже в кодировках где-то проблема. Но именно с данном случае.
Не пойму почему.
Везде Utf-8. И в бд и на сайте.
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Кириллица не проходит валидацию

Сообщение Drugpunker »

Методом тыка определил, что в знаки вопроса строку превращало правило

Код: Выделить всё

'filter', 'filter' => 'strtolower'
, стоявшее выше правила match.

Чё блин за фигня такая.
Как ножиком в спину.

А к нижнему регистру оно так и не приводит, по наблюдениям.
Ну или я не правильно понял смысл его работы.
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Кириллица не проходит валидацию

Сообщение maleks »

Замените на 'mb_strtolower'
Drugpunker
Сообщения: 187
Зарегистрирован: 2014.08.13, 19:44

Re: Кириллица не проходит валидацию

Сообщение Drugpunker »

maleks писал(а): 2020.07.18, 08:18 Замените на 'mb_strtolower'
Я так и сделал, уже после валидации, перед сохранением в бд, потому что правило не эффективно.
А вот почему правило то не работает?
Ответить