2017-01-24 8 views
0

preg_math에 문제가 있습니다.전자 메일의 지정된 이름 만 가져 오기

public function filterUsers($a_users){ 

    $a_authorizedEmail = array(
     '@test.com', 
     '@test1.com' 
    ); 

    $a_response = array(); 
    foreach ($a_users as $user) { 
     if(false !== $email_user = EmailRepository::getEmail($user['id'])){ 
      foreach($a_authorizedEmail as $email){ 
       echo $email_user; 
       if(preg_match($email, $email_user)){ 
        $a_response[]= $user; 
       } 
      } 
     } 
    } 
    return $a_response; 
} 

배열 $a_users과 : 그래서 나는이 메도이 나는 이메일 [email protected]을 가진 사용자가 있습니다. 그러나 반환에서 배열은 비어 있습니다. 아마도 나는 정확한 검증을하지 않았을 것입니다. 나

+0

. [이 하나] (https://regexone.com/references/php) 괜찮은 것 같습니다. – apokryfos

+0

원하는지 확실하지 않습니다. 하지만 전자 메일 호스트를 얻으려면'str_pos' 또는'explode'를 사용해야 할 것 같습니다 – aperpen

답변

2

이렇게 도와주세요 : 당신은 정규식 튜토리얼에서 이익을 얻을 수

public function filterUsers($a_users){ 

    $a_authorizedEmail = array(
     '@test.com', 
     '@test1.com' 
    ); 
    $pattern = "/".implode("|",$a_authorizedEmail)."$/"; //Note the "/" start and end delimiter as well as the $ that indicates end of line 
    $a_response = array(); 
    foreach ($a_users as $user) { 
     $email_user = EmailRepository::getEmail($user['id']); 
     if(false !== $email_user){ 
      echo $email_user; 
      if(preg_match($pattern, $email_user)){ 
       $a_response[]= $user; 
      } 
     } 
    } 
    return $a_response; 
}