假设我有一个用逗号分隔的电子邮件的字符串,如下所示:
$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/