我正在尝试检查是否有许多电子邮件地址是正确的,以便发送它们。
问题是,当我使用filter_var_array()
和FILTER_VALIDATE_EMAIL
进行过滤时,如果所有邮件中只有一个是正确的,那么它仍会继续。
这是我的代码:
$test_email_friend = explode(",", $email_friend);
if ( !filter_var_array($test_email_friend, FILTER_VALIDATE_EMAIL)) {
$errenvoi = "Please send only valid emails.";
}
else {
//message, headers etc here
if (mail($email_friend,$sujet,$message,$entete)){
$errenvoi = "Email sent !";
}
else {
$errenvoi = "Something very wrong happened, abandonship, I reapeat abandonship";
}
}
例如:如果数组包含“test@test.com”和“unvalidmess”。 无论如何它都被发送了,因为其中一个值是正确的。
我该如何解决这个问题?
非常感谢
答案 0 :(得分:2)
如果您阅读the docs,则表示此函数仅在失败时返回false
(函数无法执行)。否则,它返回一个数组。以下是例如:
$test = array('test@test.com', 'unvalidness');
var_dump(filter_var_array($test, FILTER_VALIDATE_EMAIL));
将输出:
array(2) {
[0]=>
string(13) "test@test.com"
[1]=>
bool(false)
}
您可以通过检查失败并在返回的数组中搜索任何布尔值false
来改变您的代码:
$result = filter_var_array($test, FILTER_VALIDATE_EMAIL);
if (!$result || in_array(false, $result, true)) {
echo 'failed or data not valid';
}