2016-12-02 11 views
1

多くの電子メールアドレスが正しいかどうかを確認するために、送信しようとしています。PHPのfilter_var_array()は、1つの値がtrueであるかどうかをチェックするだけですか?

私はfilter_var_array()FILTER_VALIDATE_EMAILでフィルタリングしていますが、すべてのメールのうち正しいものが1つだけあれば、それでも進行します。例えば

$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" が含まれている場合。 値の1つが正しいので、とにかく送信されます。

どうすればこの問題を解決できますか?あなたがthe docsを読めば、多く

答えて

0

おかげで、この関数は唯一の(関数が実行に失敗しました)失敗した場合に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

関連する問題