2016-02-16 3 views
0

Я работаю над своей небольшой системой билетов на основе PHP.PHP: проверьте, является ли строка частью массива

Теперь я хотел бы исключить обработку отправителей.

Это возможный список исключенных отправителей:

Array ( 
"[email protected]", 
"example.org", 
"[email protected]" 
) 

Хорошо - теперь я хотел бы проверить, если отправитель почты соответствует одному из них:

$sender = "[email protected]"; 

Я думаю, что это довольно легко, я думаю, я мог бы решить это с помощью in_array().

Но что

$sender = "[email protected]"; 

example.org определяется в массиве, но не [email protected] - но [email protected] также следует исключить, так как example.org находится в запретной-отправители списке.

Как я могу это решить?

ответ

1

Возможно, вы ищете stripos функцию.

<?php 

if (!disallowedEmail($sender)) { // Check if email is disallowed 
    // Do your stuff 
} 

function disallowedEmail($email) { 
    $disallowedEmails = array ( 
     "[email protected]", 
     "example.org", 
     "[email protected]" 
    ) 
    foreach($disallowedEmails as $disallowed){ 
     if (stripos($email, $disallowed) !== false) 
      return true; 
    } 
    return false 
} 
+1

я хотел бы использовать 'stripos' – cmorrissey

0

Еще один короткий вариант с stripos, implode и explode функции:

$excluded = array( 
"[email protected]", 
"example.org", 
"[email protected]" 
); 

$str = implode(",", $excluded); // compounding string with excluded emails 
$sender = "[email protected]"; 
//$sender = "[email protected]"; 

$domainPart = explode("@",$sender)[1]; // extracting domain part from a sender email 

$isAllowed = stripos($str, $sender) === false && stripos($str, $domainPart) === false; 

var_dump($isAllowed); // output: bool(false) 
Смежные вопросы