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));
}

どうしても必要な場合を除いて、正規表現の使用は避けてください。

于 2013-03-25T11:35:40.767 に答える
1

ここでは、各行について、電子メールと他のデータの間の区切り文字が一貫している、つまり単一のスペースであると想定しています。

explode ()関数を使用して、各要素を1つのスペースで分割し、結果の分割の最初の要素を取得するだけです。それがメールになります。

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

これがライブデモです

于 2013-03-25T11:36:27.757 に答える
1

文字列が常にメールアドレスで始まる場合。あなたはこのように働くことができます:

foreach($emailArray as $value){ 
  $email = explode(" ",$value)[0];
}
于 2013-03-25T11:36:59.427 に答える
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 に答える