Разнесите строку в массив с присвоенным значением и отправьте электронное письмо нескольким получателям.

У меня есть строка объявлена ​​как показано ниже

var email = 'xxx@email.com,ggg@gmail.com'

Я использую Explode, чтобы сделать его как массив

$emails = explode(",", $user->email);

С выводом $ emails вроде

array:2 [▼
0 => "xxx@email.com"1 => "ggg@gmail.com"]

То, что я ожидаю,

$a = array('xxx@email.com'=>'abc','ggg@gmail.com'=>'cde');

Result:

array:2 [▼
"xxx@email.com"=> "abc""ggg@gmail.com"=> "cde"]

Я хочу отправить электронное письмо нескольким получателям с именем получателя.e.g

abc(xxx@email.com);cde(ggg@gmail.com)

Работает нормально, когда почта-> одному получателю

mail->to('xxx@email.com','abc');

Может кто-нибудь сказать мне, как я могу сделать так, чтобы отправлять электронную почту нескольким получателям с именем?

-1

Решение

Вы пытались использовать foreach ? Например :

foreach($a as $key=>$val) {
mail->to($key, $val);
}

Обновить

Если ваша строка соответствует заявленной вами, возможно, вы могли бы сделать так:

$string = "abc(xxx@email.com);cde(ggg@gmail.com)";
$data = explode(';', $string);
$detailsArray = array();

foreach($data as $datax){
$email = "";
//Using regex to filter out string with paranthesis
preg_match('#\((.*?)\)#', $datax, $email);

//using str_replace to remove the email together with paranthesis to get the name
$name = str_replace($email[0], "", $datax);

//removing paranthesis
$email[0] = str_replace(array('(',')'),'',$email[0]);

//push it into array
$array = array($email[0] => $name);
array_push($detailsArray,$array );
}
1

Другие решения

Попробуй это:
Он будет использовать preg_match_all для создания двух массивов, один с именами и один с электронными письмами.
Затем я использую array_combine для создания массива писем с именованными ключами.

$str = "johnny-boy doe(xxx@email.com);cde(ggg@gmail.com)";

Preg_match_all('/([-A-Za-z0-9 ]+)\((.*?)\)/', $str, $match);

$emails = array_combine($match[2], $match[1]);

Var_dump($emails);

Выход:

array(2) {
["xxx@email.com"] => string(14) "johnny-boy doe"["ggg@gmail.com"] => string(3) "cde"}

https://3v4l.org/shqAe

Редактировать; имел ключ и значение в неправильном порядке в массиве писем.
Edit2; Я просто вспомнил, что если имя и фамилия, то мой предыдущий код не сработал бы. Заменено \ w + на более широкое соответствие имени.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector