【发布时间】:2012-12-27 10:18:10
【问题描述】:
我正在上传从 Excel 导出的制表符分隔的文本文件,基本上我通过使用 preg_match_all 获取文档上的所有电子邮件字段
preg_match_all("/([\s]*)[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i",$string,$emails);
在某些情况下,电子邮件会附加一个 URL,如下所示:prefix.user@domain.comwww.domain.com
我只需要去掉电子邮件地址之后的 url 的电子邮件
如何使用正则表达式完成这项工作?
【问题讨论】:
-
不太好...你可以让你的数据供应商来修复文件吗?从长远来看,它会为您节省很多麻烦。
-
数据来自一个有 8 年历史的 excel 联系人目录,有大约 200 个文件:S
-
好吧,抛开可争论的模式不谈,它的一部分
@[\._a-zA-Z0-9-]+不可能捕获@domain.comwww.domain.com,除非它按原样出现在输入中。domain.comwww.domain.com是 .com 区域的合法域名。您所有的“错误”捕获是否都看起来像“没有 www-followed-by-domain-with-www”的域? -
不,大约有 15% 的输入带有附加的 url,我已经对 10 个不同的文件进行了一些测试,并且所有文件中都存在这种异常情况,我注意到每个网址以 www 开头。但是...不知道是否也有一些带有http或https的...我相信有
-
我正在考虑将正则表达式结果分解为 2 个字符串,一个是实际的电子邮件,另一个是垃圾邮件
标签: php regex preg-replace preg-match-all