php - 解析电子邮件 ID 的文本

标签 php regex email preg-match

我正在尝试使用 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/

相关文章:

php - MySQL 错误 : "mysql_fetch_assoc() expects parameter 1 to be resource"

php - Yii:如何使用 CDbCriteria 在 GROUP BY 之前进行 ORDER BY?

javascript - 在javascript中提取由两个不同短语分隔的大字符串内部的字符串

正则表达式匹配 1 或 2 个字母后跟 1 或 2 位数字

c# - 如何替换包含格式信息的字符串

css - 如果存在正确的字体,如何使用 CSS 仅显示文本?

php - 在 wordpress 中为 cron 作业创建了一个插件,但是如何在没有任何人访问该站点的情况下将其与 linux 连接

php - 如何使用数组中的值创建动态 mysql 查询?

php - Linux - 使用 PHP Mail 从 SMTP 服务器发送

c# - 在c#中使用smtp在同一线程中为gmail发送电子邮件