2016-05-16 7 views
0

私はプレーンテキスト形式のユーザー名、メール、およびパスワードを持つhtmlコンテキストを持っています。情報グループ間には2つの改行があります。リストからメールのみを取得するには?

nickname 
[email protected] 
pass 


nickname2 
[email protected] 
pass2 

すべてのメールをカンマ区切り文字で取得し、大きな文字列変数に設定したいと考えています。

多くの正規表現を試しましたが、問題を解決できませんでした。本当の正規表現を見つけるための提案があれば感謝します。

+1

あなたは既に試した正規表現を投稿してください(あなたがすでに行った作業をやり直してもらえませんか?)それがCSVの場合は、それをループして毎秒のフィールド値を引き出すことができるはずです。 – chris85

答えて

0

.txtファイルには、(あなたが十分なメモリと時間があれば)あまり大きくない場合は、次の

$lines = file('mails.txt',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

function get_emails($val) 
{ 
    if (filter_var($val, FILTER_VALIDATE_EMAIL)) { 
    return $val; 
} 
} 
$emails=array_filter($lines,"get_emails"); 
//print_r($emails); 

$emails_var=join(",",$emails); 
//echo $emails_var; 

'mails.txt' - >あなたのファイルへのパス。

2

パターン:

[email protected]+.\.\w+ 

例: https://regex101.com/r/nM1hK3/2

編集

+0

@ aは電子メールアドレスではありません。 [email protected]はです。正しいパターンは '' + +。+ \ .. + "' – Nick

+0

になっています。ありがとう@Nick – fdfey

+0

@fdfeyおそらく問題はありませんが、リストには電子メールとパスワードの両方が含まれているので、パスワードはEメール。 'i.h @ ve.a.passord'はsomeonesのパスワードにすることができますが、電子メールとして取得されます。 1つは、TLDリストhttp://data.iana.org/TLD/tlds-alpha-by-domain.txtと比較することですが、それは問題ではないでしょうか。私はあなたの答えが間違っていると言っているわけではない、ちょうどそのパスワードを電子メールとして買うことができます。 – Andreas

関連する問題