You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MySQL获取的姓名邮箱字符串转为SendinBlue所需二维关联数组

实现方法(PHP)

直接用PHP的字符串处理+正则匹配就能搞定,步骤很清晰:

  1. 把原始字符串按逗号拆分,兼容逗号后有/无空格的情况
  2. 遍历每个拆分出来的联系人条目,提取姓名和邮箱
  3. 将提取到的信息组装成SendinBlue要求的二维关联数组

完整代码示例:

// 从数据库获取的原始字符串
$string = "john('john@yahoo.com'), frank('frank@gmail.com'),simon('simon@to.com')";

// 初始化最终的收件人数组
$to = [];

// 拆分字符串,处理逗号后带/不带空格的情况
$recipients = preg_split('/,\s*/', $string);

// 遍历每个联系人条目
foreach ($recipients as $recipient) {
    // 用正则匹配提取姓名和邮箱
    if (preg_match('/^([^\(]+)\(\'([^\']+)\'\)$/', $recipient, $matches)) {
        $name = trim($matches[1]); // 消除姓名前后可能存在的空格
        $email = $matches[2];
        $to[] = ['name' => $name, 'email' => $email];
    }
}

// 组装SendinBlue的邮件对象
$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail([
   'subject' => 'Report',
   'sender' => ['name' => 'sender', 'email' => 'sender@domain.com'],
   'to' => $to,
   'htmlContent' => $output
]);

补充说明

  • 正则/^([^\(]+)\(\'([^\']+)\'\)$/专门匹配姓名('邮箱')格式的字符串,确保准确提取内容
  • 加trim()是为了容错,比如原始字符串里如果姓名前后不小心带了空格也能处理
  • 遇到格式不符合的条目会自动跳过,不会影响正常条目组装

内容的提问来源于stack exchange,提问作者R_life_R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:30:55