从字符串中获取电子邮件ID

时间:2013-03-25 11:31:59

标签: php

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

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 个答案:

答案 0 :(得分:2)

您可以通过空格explode()字符串和array_shit()第一个元素。类似的东西:

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

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

答案 1 :(得分:1)

  

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

只需使用explode()函数将每个元素拆分为一个空格,然后取得生成的拆分的第一个元素。这将是电子邮件。

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

Here is a live demo

答案 2 :(得分:1)

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

foreach($emailArray as $value){ 
  $email = explode(" ",$value)[0];
}

答案 3 :(得分: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
)