php - 如何将逗号分隔的电子邮件列表转换为包含键和值的数组

标签 php arrays

假设我有一个用逗号分隔的电子邮件的字符串,如下所示:

$var = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f1e3f17100b121e1613511c1012" rel="noreferrer noopener nofollow">[email protected]</a>,<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cfad8fa8a2aea6a3e1aca0a2" rel="noreferrer noopener nofollow">[email protected]</a>,<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="680b281109000707460b0705" rel="noreferrer noopener nofollow">[email protected]</a>';

然后我用逗号将其分解,如下所示:

$array = explode(',', $var);

然后我循环遍历数组,通过@符号再次爆炸它,如下所示:

$myarray = '';
foreach($array as $k=>$v){
    $array[$k] = explode('@', $v);
    $name = $array[$k][0];
    $email = $v;

    $myarray .= "'".$email."' => ";
    $myarray .= "'".$name."', ";
}

然后我删除最后一个逗号并回显结果:

$myarray = rtrim($myarray, ', ');
echo $myarray."<br>";

结果正是我想要的。

'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dbba9bb3b4afb6bab2b7f5b8b4b6" rel="noreferrer noopener nofollow">[email protected]</a>' => 'a', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fe9cbe99939f9792d09d9193" rel="noreferrer noopener nofollow">[email protected]</a>' => 'b', '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6f0c2f160e070000410c0002" rel="noreferrer noopener nofollow">[email protected]</a>' => 'c'

但是当我尝试将它用作数组时,它不起作用。我需要将它用作真正的数组,如下所示(这是硬编码方式,但我需要使其动态工作):

$message_object->myFunction('something', array(
  '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b4d5f4dcdbc0d9d5ddd89ad7dbd9" rel="noreferrer noopener nofollow">[email protected]</a>' => 'a',
  '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="90f2d0f7fdf1f9fcbef3fffd" rel="noreferrer noopener nofollow">[email protected]</a>' => 'b',
  '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="82e1c2fbe3eaededace1edef" rel="noreferrer noopener nofollow">[email protected]</a>' => 'c'
));

如果我尝试以这种方式使用 $myarray,它会失败:

$message_object->myFunction('something', array($myarray));

那么我怎样才能正确地将逗号分隔的电子邮件列表转换为多维数组(我认为它被称为)?

最佳答案

只需将 $myarray 变量类型字符串更改为数组即可。

$myarray = array();
foreach($array as $k=>$v){
    $array[$k] = explode('@', $v);
    $name = $array[$k][0];
    $email = $v;

    $myarray[$email] = $name;
}
print_r($myarray);

关于php - 如何将逗号分隔的电子邮件列表转换为包含键和值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922948/

相关文章:

php - 从求和的 MySQL 记录中选择

php - 如何在 MySQL 数据库中存储 route 的站点?

PHP错误: "Filename cannot be empty"

PHP多维数组算法?

javascript - 为每个对象创建唯一 ID

PHP Firebase 帮助 - 设置 JWT

php - 从 GROUP BY 获取最后一个值

PHP MySQL : update table with value of an array combine

c - 越界访问数组有多危险?

c - c 中处理 scanf 的段错误