我有一个这样的字符串:
..., "test1@test1.com" <test1@test1.com>, "test2@test2.com" <test2@test2.com>, "test3@test3.com", "test4@test4.com" <test4@test4.com>, ....
我正在通过,
对所有内容进行爆炸,但问题是我不想让这个价值相当
[0] => "test1@test1.com" <test1@test1.com>
我需要删除<..>
括号中的电子邮件。
所以结果应该是这个[0] => test1@test1.com
。
任何提供如何删除第二个短语?
答案 0 :(得分:4)
您可以使用专为此类电子邮件地址列表量身定制的功能,例如imap_rfc822_parse_adrlist
。映射它并提取您需要的信息可能已经完成了:
$list = ""test1@test1.com" <test1@test1.com>, "test2@test2.com" <test2@test2.com>, "test3@test3.com", "test4@test4.com" <test4@test4.com>";
$adresses = array_map(function($entry) {
return sprintf('%s@%s', $val->mailbox, $val->host);
}, imap_rfc822_parse_adrlist($list, ""));
这样做的好处是,它可以正确处理您所拥有的引用的可打印文本 - 正确完成这些文本非常重要(实际上)。
答案 1 :(得分:2)
这里最简单的方法 - 使用strip_tags函数(参见strip_tags description)
答案 2 :(得分:1)
使用正则表达式替换&lt; ...&gt;之间的任何内容对于空字符串,然后将修改后的字符串分解为数组。
答案 3 :(得分:1)
<?php
$str = '"test1@test1.com" <test1@test1.com>';
$str= preg_replace("(<.*>+)", "", $str);
print $str;
?>
答案 4 :(得分:1)
最简单的方法是使用preg_match
:
preg_match('(<.*>+)', $your_emails, $matches);
print_r($matches); // array of zero or more matches depending on input
答案 5 :(得分:1)
您可以将文本分解为数组,并使用清除文本的函数运行array_map
。像这样:
function clean($t){
//Use regexp to replace desired text
return preg_replace('/<[^>]*>/', '', $t);
}
$text = '"test1@test1.com" <test1@test1.com>, "test2@test2.com" <test2@test2.com>, "test3@test3.com", "test4@test4.com" <test4@test4.com>';
$a = explode(',', $text);
var_dump($a);
$b = array_map("clean", $a);
var_dump($b);
答案 6 :(得分:0)
如果
$yourString='"test1@test1.com" <test1@test1.com>';
你可以使用:
$yourString=substr($yourString,1,strpos($yourString,'<')-3);
(编辑)的
答案 7 :(得分:0)
这是一行代码:
array_map(function($a){ return trim($a, ' "'); }, explode(',', strip_tags($string)));
整体:
<?php
$string = <<<TK
"test1@test1.com" <test1@test1.com>, "test2@test2.com" <test2@test2.com>, "test3@test3.com", "test4@test4.com" <test4@test4.com>
TK;
$result = array_map(
function($a){
return trim($a, ' "');
},
explode(',', strip_tags($string))
);
var_dump($result);
<强>输出:强>
array(4) {
[0]=>
string(15) "test1@test1.com"
[1]=>
string(15) "test2@test2.com"
[2]=>
string(15) "test3@test3.com"
[3]=>
string(15) "test4@test4.com"
}