2016-12-02 2 views
1

Я пытаюсь проверить, правильно ли отправлено много адресов электронной почты для их отправки.PHP filter_var_array() только проверить, истинно ли одно значение?

Дело в том, что я фильтрую с 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";    
    } 
} 

Например: Если массив содержит "[email protected]" и "unvalidmess". Он отправлен в любом случае, потому что одно из значений верно.

Как это исправить?

спасибо

ответ

0

Если вы читаете the docs, он говорит, что эта функция возвращает только false на провал (функция не удалось выполнить). В противном случае он возвращает массив. Таким образом, следующий, например:

$test = array('[email protected]', 'unvalidness'); 
var_dump(filter_var_array($test, FILTER_VALIDATE_EMAIL)); 

Выведет:

array(2) { 
    [0]=> 
    string(13) "[email protected]" 
    [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'; 
} 
+1

Как я не думал об этом! Извините, я неправильно прочитал инструкцию! Ваше решение работает как шарм! Большое спасибо ! – Gawet

Смежные вопросы