我正在尝试使用php / regex解析电子邮件ID的文本。是否有任何类或内置方法来执行此操作? 该文本包含随机位置的多个电子邮件ID。
文本的来源是.doc文件,然后我将其粘贴到表单中,以便在提交时进行处理。
preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email) //from php.net
我在superuser上就问题的软件解决方案提交了类似的问题。
答案 0 :(得分:3)
很难准确检测运行文本中嵌入的电子邮件。您将错误地匹配不是电子邮件地址的内容,或者错过一些有效但奇怪的电子邮件地址。
一个很好的起点是
preg_match_all('/\b[A-Z0-9._%+-]+@(?:[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从其库中生成)
它会匹配大多数“普通”地址,但不会找到mail@1.2.3.4
或"Tim\ O'Reilly"@microsoft.com
之类的地址。当然它会像my@mail.addr
那样与废话相匹配。