2010-09-23 90 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