我正在尝试使用 php/regex 解析电子邮件 ID 的文本。是否有任何类或内置方法可以执行此操作? 该文本在随机位置包含多个电子邮件 ID。
文本来源是 .doc 文件,然后我将其复制粘贴到表单中,以便在提交时进行处理。
preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email) //from php.net
我在 superuser 上提交了类似的问题寻找问题的软件解决方案。
最佳答案
很难准确检测嵌入在运行文本中的电子邮件。您要么会错误地匹配非电子邮件地址的内容,要么会错过一些有效但奇怪的电子邮件地址。
一个好的起点是
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 从其库生成)
它将匹配大多数“正常”地址,但不会找到像 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4429252d2804756a766a776a70" rel="noreferrer noopener nofollow">[email protected]</a>
这样的地址或"Tim\ O'Reilly"@microsoft.com
。当然它会匹配像 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abc6d2ebc6cac2c785cacfcfd9" rel="noreferrer noopener nofollow">[email protected]</a>
这样的废话。 .
关于php - 解析电子邮件 ID 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3776630/