2017-06-05 29 views
0

這個問題在我剛剛接受的一次工作面試中提出,我無法回答。這裏是問題:從一個給定的電子郵件列表中提取某些電子郵件匹配很少的條件

從給定的電子郵件列表([email protected][email protected][email protected],答案@沒有email.com,[email protected],kondoe @ nomail.com)僅提取以(@ noemail.com,@ no-email.com和@no email.com)結尾的電子郵件。

我搜索並試圖運行代碼,但它沒有運行。

<?php 

    $email_list = ([email protected], [email protected], [email protected], [email protected] email.com, [email protected], [email protected]); 

    $pattern = ('@noemail.com', '@no-email.com', '@no email.com'); 

    echo preg_match($pattern, $email_list); 

?> 

回答

0
<?php 

$email_list = array("[email protected]", "[email protected]", "[email protected]", "[email protected] email.com", "[email protected]", "[email protected]"); 
$matchlist = array("@noemail.com", "@no-email.com", "@no email.com"); 

function str_contains($haystack, $needle) { 
    return (strpos($haystack, $needle) !== false); 
} 

foreach ($email_list as $email) { 
    foreach($matchlist as $match) { 
     if (str_contains($email, $match)) { 
      echo $email . "<br>"; 
      break; 
     } 
    } 
} 

不完美的方式,但工程。

1
$email_list = array('[email protected]', '[email protected]', 
        '[email protected]', '[email protected] email.com', 
        '[email protected]', '[email protected]'); 
$result = array(); 

foreach ($email_list as $email) { 
    if (preg_match('[email protected][ -]?email\.com~', $email)) { 
     $result[] = $email; 
    } 
} 

var_export($result); 
// output -> 
//  array (
//   0 => '[email protected]', 
//   1 => '[email protected]', 
//   2 => '[email protected] email.com', 
//  ) 
+0

這是比我的更好的解決方案,因爲它使用preg_match你想使用什麼。我是一個更簡單的方法,我遍歷這兩個數組並嘗試匹配它們。 – Janno

相關問題