从字符串中删除短语

时间:2013-09-27 07:58:53

标签: php email-address

我有一个这样的字符串:

..., "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。 任何提供如何删除第二个短语?

8 个答案:

答案 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"
}