2014-05-21 4 views
-3

사용자 항목에 따라 여러 전자 메일 주소를 쉼표로 구분하거나 하나의 전자 메일 주소로만 유효성을 검사하려고합니다.여러 전자 메일 유효성 검사

나는이 기능을 만들어

:

function isEmailMultiple($address) 
     { 
      $validate = array(); 
      if(strlen($address) < 1) 
       { 
        return false; 
       } 

      $emailAddresses = explode(",", $address); 
      foreach($emailAddresses as $emailAdd) 
       { 
        $emailAdd = trim($emailAdd); 
        if (!preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i', $emailAdd)) 
         { 
          // if validation fails, add error to array 
          $validate[$emailAdd] = 1; 
         } 
       } 

      if(count($validate) == 0) 
       { 
        // No errors added to the array 
        return true;   
       } 

      else 
       {   
        return false; 
       } 
     } 

이것은 내파 기능입니다 :

$headers .= 'BCC: '. implode(",", $emailfromform) . "\r\n"; 

과 내가이 오류 받고 있어요 : 당신은 매개 변수를 무시

Warning: implode() [function.implode]: Invalid arguments passed in. . . 
+0

어디서 implode 함수를 사용 했습니까? 코드 게시하기 –

+0

실제로 implode()를 사용하는 코드를 보여줘야합니다. 또한 오류 메시지에 모두 나와 있습니다. implode()에 접착제와 배열을 전달해야합니다. –

+1

함수 isEmailMultiple ($ address) $ address = array(); 매개 변수를 재정의합니다. 함몰 함수에서 매개 변수로 새 변수를 사용하십시오. remove $ address = array(); 줄을 다시 시도하십시오 – Kaiser

답변

4

당신이 implode()을 사용할 수 없습니다 단지 하나의 값 (문자열)입니다 다시 시도하고 그것은 단지 배열을 받아 내파 함수에서 매개 변수로 새 변수를 사용 끈). 이제

당신이 이메일 주소는 쉼표로 구분되어 있는지 확인하려는 경우, 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

// split email address by space, comma, colon, or semi-colon 
$emailfromform = preg_split("/[\s,;:]+/", $emailfromform); 
// Put them back together separated by a comma 
$emailfromform = implode(",", $emailfromform); 
// add to the headers 
$headers .= 'BCC: '. $emailfromform . "\r\n"; 

그런 다음 당신이 있었다 같은 이메일 주소가 단지 기능을 사용하여 확인 할 수 있습니다. 다음은 개선 된 내용으로 작성한 나의 버전입니다.

function isEmailMultiple(array $emails) { 
    if(count($emails) === 0) { 
     return false; 
    } 

    $emailAddresses = explode(",", $emails); 
    foreach($emailAddresses as $emailAdd) { 
     $emailAdd = trim($emailAdd); 
     if (!filter_var($emailAdd, FILTER_VALIDATE_EMAIL)) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

고마워요. 하지만 어떻게 확인할 수 있습니까? – ThisBoyPerforms

+0

validate 함수를 사용하십시오. 내 대답에 내 버전을 추가했습니다. –

0
function isEmailMultiple($address) 
$address = array(); 

을 . 및

$address = array(); 라인을 제거하고로를 설정하는 ($emailfromform 이후

관련 문제