Мне нужно проверить, является ли ввод utf-8 символов кириллицы. Есть ли что-то подобное?
$this->validate($request, [
'name' => 'required|cyrillic'
]);
Если нет, то как мне этого добиться?
Вы должны создать собственное правило проверки:
https://laravel.com/docs/5.1/validation#custom-validation-rules
<?php
namespace App\Providers;
use Validator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('cyrillic', function ($attribute, $value, $parameters, $validator) {
return preg_match('/[А-Яа-яЁё]/u', $value);
});
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
function isCyrillic($text) {
return preg_match('/[А-Яа-яЁё]/u', $text);
}
вернет true, если встречается кириллический символ
Используя регулярное выражение от @ Hearner’s ответ, Вы можете добавить регулярное выражение в свои правила, но при использовании регулярных выражений вы должны добавить правила в массив, потому что |
символ имеет особое значение в регулярных выражениях:
$this->validate($request, [
'name' => array('required', 'regex:/[А-Яа-яЁё]/u')
]);
В моем случае, проверка корректности laravel 5.2 некорректно работает с
[А-Яа-я]
пропуская некоторые символы, такие как:
«У ц ш щ» и т. Д.
Это не блестящее решение, но оно работает правильно в моем случае:
$text_regex = '/^[А-ЯЦцУуШшЩщФфЫыРрЭэЧчТтЬьЮюЪъХхЁа-яёa-zA-Z0-9\- @%;()\$\.\,\"\']+$/';
пытаться
$this->validate($request, [
'name' => ['required', 'regex:/^[А-Яа-яЁё]$/u'],
]);