Laravel 如何验证输入不包含特定单词?
在我的注册表单中,我有一个昵称字段,用户可以在其中输入文本以在我的网站上标识自己。过去,一些用户输入了别人可能会觉得冒犯的昵称。Laravel为表单提供了验证功能,但如何确保表单字段中不包含用户可能会觉得冒犯的词语?虽然Laravel包含了一系列验证规则,但检查给定列表中是否存在词语并不是其中之一: 但是,Laravel还允许我们创建自己的自定义验证规则: 我们可以使用Laravel 如何验证输入不包含特定单词?,laravel,laravel-4,Laravel,Laravel 4,在我的注册表单中,我有一个昵称字段,用户可以在其中输入文本以在我的网站上标识自己。过去,一些用户输入了别人可能会觉得冒犯的昵称。Laravel为表单提供了验证功能,但如何确保表单字段中不包含用户可能会觉得冒犯的词语?虽然Laravel包含了一系列验证规则,但检查给定列表中是否存在词语并不是其中之一: 但是,Laravel还允许我们创建自己的自定义验证规则: 我们可以使用Validator::extend()创建验证规则: Validator::extend('not_contains',fu
Validator::extend()
创建验证规则:
Validator::extend('not_contains',function($attribute,$value,$parameters)
{
//禁词
$words=array('a***','f***','s***');
foreach($words作为$word)
{
如果(stripos($value,$word)!==false)返回false;
}
返回true;
});
上面的代码定义了一个名为not\u contains
的验证规则-它在字段值中查找$words
中的每个单词,如果发现任何单词,则返回false。否则,它将返回true以指示验证已通过
然后,我们可以正常使用我们的规则:
$rules=数组(
“昵称”=>“必需”|不包含”,
);
$messages=数组(
'not_contains'=>'属性不能包含禁止的单词',
);
$validator=validator::make(输入::all(),$rules,$messages);
如果($validator->fails())
{
return Redirect::to('register')->withErrors($validator);
}
在Laravel 5.7和早期版本中,您可以使用内置的not_regex
规则检查某些字符串。例如,在控制器内使用validate
方法。验证需要狗名的表单输入:
...
public function update(Request $request) {
$custom_validation_messages = [
'not_regex' => "C'mon! Be original. Give your dog a more interesting name!"
];
$this->validate($request, [
'pet_name' => [ 'not_regex:/^(fido|max|bingo)$/i' ],
], $custom_validation_messages);
...
}
在这种情况下,如果提交的“宠物名”
值为:
- 菲多
- 菲多
- 马克斯
- 马克斯
- 宾果游戏
- 宾果游戏
- 等等
regex
规则,如下所示:
[ 'regex:/^(fido|max|bingo)$/i' ]
请参阅。如果整个字段值在/不在列表中,则规则不执行相同的操作?不执行我需要的-in/not\u in检查:。下面的答案检查列表项是否包含在字段中的任何位置。是否尝试了该规则?如果整个字段值位于/不在列表中,则不执行我需要的-in/not\u in检查:。下面的答案检查列表项是否包含在字段中的任何位置。啊!知道了!感谢澄清,你是对的。为了澄清,Laravel5.6中添加了
not_regex