我有一个从客户端发送的电子邮件列表,这些电子邮件之间用逗号分隔。我如何验证所有这些电子邮件以确保它们是有效的电子邮件?例如,用户可以在这样的文本框中捕获电子邮件 [电子邮件受保护]、[电子邮件受保护]、[电子邮件受保护]等
我在某个时候通过使用客户验证功能构建了类似的功能
Validator::extend("emails", function($attribute, $value, $parameters) {
$rules = ['email' => 'required|email'];
$emails = array_map('trim', explode(';', $value)); //$value
foreach ($emails as $email) {
$data = ['email' => $email];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
return false;
}
}
return true;
});
如果您尝试验证电子邮件数组,那么最简单的验证方法是使用点
.
语法和通配符 *
。这是例子:
$request->validate([
'emails.*' => ['email'],
...
]);