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