2017-01-24 60 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; 
}