Laravel - 如何验证西里尔文

时间:2016-05-27 12:05:56

标签: php validation laravel cyrillic

我需要检查输入是否是utf-8西里尔字符。有这样的事吗?

$this->validate($request, [
   'name' => 'required|cyrillic'
]);

如果没有,我怎么能实现呢?

5 个答案:

答案 0 :(得分:2)

您必须创建自己的自定义验证规则:

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()
    {
        //
    }
}

答案 1 :(得分:1)

function isCyrillic($text) {
    return preg_match('/[А-Яа-яЁё]/u', $text);
}
如果遇到西里尔字符,

将返回true

答案 2 :(得分:1)

使用来自@ Hearner的answer的正则表达式,您可以在规则中添加正则表达式,但在使用正则表达式时,应该在数组中添加规则,因为|字符具有特殊含义在正则表达式中:

$this->validate($request, [
   'name' => array('required', 'regex:/[А-Яа-яЁё]/u')
]);

答案 3 :(得分:1)

就我而言,laravel 5.2验证工作不正确

[А-Яа-я]
跳过一些符号,如:

'Уцшù'等

这不是一个出色的解决方案,但在我的案例中它正常工作:


 $text_regex = '/^[А-ЯЦцУуШшЩщФфЫыРрЭэЧчТтЬьЮюЪъХхЁа-яёa-zA-Z0-9\- @%;()\$\.\,\"\']+$/';

答案 4 :(得分:0)

$this->validate($request, [
   'name' => ['required', 'regex:/^[А-Яа-яЁё]$/u'],
]);