Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-如何验证西里尔字母_Php_Validation_Laravel_Cyrillic - Fatal编程技术网

Php Laravel-如何验证西里尔字母

Php Laravel-如何验证西里尔字母,php,validation,laravel,cyrillic,Php,Validation,Laravel,Cyrillic,我需要检查输入是否是utf-8西里尔字母。有这样的东西吗 $this->validate($request, [ 'name' => 'required|cyrillic' ]); 如果没有,我如何实现这一点?您必须创建自己的自定义验证规则: 如果使用@Hearner的正则表达式遇到西里尔字符,则返回true。您可以向规则中添加正则表达式,但使用正则表达式时,应在数组中添加规则,因为字符在正则表达式中具有特殊意义: $this->validate($request,

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

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

如果没有,我如何实现这一点?

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



如果使用@Hearner的正则表达式遇到西里尔字符,则返回true。您可以向规则中添加正则表达式,但使用正则表达式时,应在数组中添加规则,因为
字符在正则表达式中具有特殊意义:

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


在我的例子中,Laravel5.2验证与 [А-ЯЯ-Я]跳过一些符号,如:

“Уцц”等。 这不是一个绝妙的解决方案,但在我的情况下,它是正确的:


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

这不是问题的答案。这并不能回答Laravel问题。检查输入是否为西里尔字符和输入是否为UTF-8西里尔字符是两个不同的问题。将链接作为答案发布不是一个好主意。链接变得过时和无效。如果您还从链接中提取相关部分,那就更好了。感谢您的关注,使这一功能变得更好的是
Validator::extend('cyrillic',function($attribute,$value,$parameters,$Validator){return preg_match('/[А-Яа-ггё]/u',$text)});而不是一般的
foo`stuff。这将为这个问题提供一个完整的答案
$this->validate($request, [
   'name' => array('required', 'regex:/[А-Яа-яЁё]/u')
]);
$this->validate($request, [
   'name' => ['required', 'regex:/^[А-Яа-яЁё]$/u'],
]);

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