2016-12-02 80 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