2010-09-23 91 views
2

我想解析電子郵件ID使用PHP /正則表達式的文本。有沒有任何類或內置方法來做到這一點? 該文本包含多個電子郵件ID的隨機地方。解析電子郵件ID的文本

文本的來源是.doc文件,然後我複製粘貼到表單中,以便在提交時處理。

preg_match('/^[^@][email protected][a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email) //from php.net 

我對superuser提交了一個類似的問題,用於解決問題的軟件解決方案。

回答

3

很難準確檢測嵌入到正在運行的文本中的電子郵件。你會匹配錯誤地不是電子郵件地址的東西,或者錯過一些有效但奇怪的電子郵件地址。

一個很好的出發點是

preg_match_all('/\b[A-Z0-9._%+-][email protected](?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i', $subject, $result, PREG_PATTERN_ORDER); 
for ($i = 0; $i < count($result[0]); $i++) { 
    # Matched text = $result[0][$i]; 
} 

(從庫由RegexBuddy生成)

它將匹配最「普通」的地址確定,但不會找到那些象[email protected]"Tim\ O'Reilly"@microsoft.com。當然,它會匹配廢話,如[email protected]

+0

謝謝。我會研究它。 – abel 2010-09-23 09:19:39

+0

,工作得很好。謝謝! – abel 2010-09-23 09:35:07