Редактировать
Поскольку вы уже указали, что заголовки представлены в виде строки , но вам действительно нужно проанализировать адреса из нее, нетнужно заново изобрести колесо:
Эти две функции выполнят работу за вас, последняя даст вам массив с объектами, для которых предварительно заданы адреса электронной почты.-парсированный, так что вы можете легко принимать решения на основе хоста.
Мне не совсем понятно, в чем заключается ваша проблема из вашего вопроса.
Пока вы обеспокоены фильтрацией строки, содержащей один адрес электронной почты (приведите ее к массиву)) или массив, содержащий один или несколько адресов:
Чтобы отфильтровать существующий массив адресов электронной почты, вы можете использовать простую функцию отображения массива, которая установит для любого письма, не соответствующего хосту вашего сайта, значение FALSE
изатем отфильтруйте копию массива Demo :
$addresses = array(
'mary@mysite.com',
'mary@othersite.com',
);
$myhost = 'mysite.com';
$filtered = array_map(function($email) use ($myhost) {
$host = '@'.$myhost;
$is = substr($email, -strlen($host)) === $host;
return $is ? $email : FALSE;
}, $addresses);
$filtered = array_filter($filtered);
print_r($filtered);
Этот код предполагает, что вы уже собрали адреса электронной почты.Вы не указали, как вы анализируете заголовки, которые уже есть в вашем вопросе, поэтому на самом деле неизвестно, с какими данными вы имеете дело, поэтому я решил начать с конца вашей проблемы.Дайте нам знать, если у вас есть больше информации.