0

我的数组包含格式如下的字符串:

a@hotmail.com Entry ID: 12321
b@hotmail.com Entry ID: 12322 Entry ID: 12323
c@hotmail.com Entry ID: 12324 Entry ID: 12325 Entry ID: 12326
d@hotmail.com Entry ID: 12327 Entry ID: 12328
e@hotmail.com Entry ID: 12329 Entry ID: 123210

我只想从每个字符串中获取电子邮件地址并推送到一个数组中。

我试过http://www.webdeveloper.com/forum/showthread.php?200875-extract-email-from-string-text-%28patterns%29

以及来自 Stackoverflow 的许多其他人,但浏览器在echo/print_r上显示空白屏幕

4

4 回答 4

2

您可以explode()将字符串由空格和array_shit()第一个元素组成。就像是:

$emailAddresses = array();
foreach($strings as $string) {
   $emailAddresses[] = array_shift(explode(' ', $string));
}

除非绝对必要,否则避免使用 RegEx。

于 2013-03-25T11:35:40.767 回答
1

如果字符串总是以电子邮件地址开头。你可以这样工作:

foreach($emailArray as $value){ 
  $email = explode(" ",$value)[0];
}
于 2013-03-25T11:36:59.427 回答
1

我在这里做一个假设,对于每一行,电子邮件和其他数据之间的分隔符是一致的——一个空格。

只需使用explode()函数将每个元素拆分为一个空格,并获取结果拆分的第一个元素。那将是电子邮件。

foreach($arr as $key => $value){
  $parts = explode(" ",$value);
  $email = $parts[0];
}

这是一个现场演示

于 2013-03-25T11:36:27.757 回答
0

你需要使用regex.

preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
print_r($matches[0]);

输出

Array
(
    [0] => a@hotmail.com
    [1] => b@hotmail.com
    [2] => c@hotmail.com
    [3] => d@hotmail.com
    [4] => e@hotmail.com
)
于 2013-03-25T11:35:07.447 回答