2012-12-27 56 views
0

我上傳從Excel導出的製表符分隔文本文件,基本上我越來越對文檔中的所有電子郵件字段,通過使用preg_match_all對PHP刪除URL正則表達式從電子郵件串

preg_match_all("/([\s]*)[\._a-zA-Z0-9-][email protected][\._a-zA-Z0-9-]+/i",$string,$emails); 

在一些案件的電子郵件保存與連接到它像這樣的網址:[email protected]

我需要剝去只有電子郵件沒有那是事後的電子郵件地址

我怎樣才能使用正則表達式這項工作的網址?

+0

不是很好......你可以得到你的數據供應商來修復文件;從長遠來看,它會爲你節省很多麻煩。 – Ben

+0

數據來自一個8歲的excel聯繫人目錄,其中有200個文件:S –

+0

那麼擱置可論證的模式,它是'@ [\ ._ a-zA-Z0-9 - ] +'不可能的部分趕上@ domain.comwww.domain.com,除非它是在輸入中顯示。而'domain.comwww.domain.com'是.com區域內的一個合法域名。是否所有的「錯誤」捕獲看起來像「無域www-後跟域 - 帶www」? –

回答

1

像這樣列出最後一個正規表組中的所有可能的域名,包括頂級域名。

[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum) 

你可以閱讀更多關於電子郵件驗證here或閱讀相關的問題here

UPDATE

表達符合RFC 2822標準

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum) 
+0

可能不是,'a @ co'是一個有效的電子郵件地址,你也會在'a @ b.com.au'之類的東西上出錯...... – Ben

+0

@Ben,感謝您提及,我已經更新了答案! –

+0

我試過你更新的正則表達式,並給我一個未知的修飾符'+' –