У меня есть строка объявлена как показано ниже
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');
Может кто-нибудь сказать мне, как я могу сделать так, чтобы отправлять электронную почту нескольким получателям с именем?
Вы пытались использовать 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 );
}
Попробуй это:
Он будет использовать 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"}
Редактировать; имел ключ и значение в неправильном порядке в массиве писем.
Edit2; Я просто вспомнил, что если имя и фамилия, то мой предыдущий код не сработал бы. Заменено \ w + на более широкое соответствие имени.