【发布时间】:2015-11-19 01:41:05
【问题描述】:
我正在尝试通过应对以下挑战来提高我的编程 (PHP) 技能。接下来的问题不是代码问题,我也不是要代码,而是应该应用的编程逻辑。
(9,'zxvvgf@housecapades.com',0,0,1,1,0,1,1),
(10,'qwer@rogers.co.uk',1,0,0,1,0,0,1),
(11,'lorenIpsum@hotmail.com',0,0,0,1,0,0,1),
(12,'BarackObama@googlemail.co.uk',1,0,9,1,1,1,1),
(13,'DonaldTrump@courtesysupportteam.net',0,0,9,1,1,1,1),
(15,'Mcaine@mynet.com',1,0,9,1,1,1,1),
(16,'davestra_@hotmail.com',0,0,0,1,0,0,1),
(17,'lewisHamilton@carracing.co.uk',1,0,9,1,1,1,1)
目标
考虑上面的以下数据转储,我需要找到一种方法来仅提取以.co.uk 结尾的电子邮件地址并将其输入到数据库表中。在此示例中,只有 2 个以 .co.uk 结尾的电子邮件地址,即 BarackObama@googlemail.co.uk 和 lewisHamilton@carracing.co.uk
问题
我很难弄清楚如何解决这个问题,因为:
- 没有(大多数)电子邮件地址的字符数不同
- 应忽略的电子邮件地址之间存在不相关的数据,更具体地说是数字
我的逻辑/伪代码
在行中找到一个公分母(我注意到第一列是整数,每行增加一个)使用它来为变量
$min和$max赋值(在这个例子中$min=9和@ 987654328@)使用上面分配的变量循环遍历行,每次迭代都会增加一个循环
内部循环忽略所有整数类型的字符
使用 pregmatch 查找以 .co.uk 结尾的电子邮件地址
如果找到添加到数组
$couk_emailselse 循环到下一行当循环结束时将数组
$couk_emails上传到数据库表
这就是我想出的逻辑/Psuedo,但我觉得它有缺陷。我认为这是一个相当艰巨的挑战,所以我很想听听经验丰富的程序员如何解决这类问题
请注意,这篇文章中的所有电子邮件地址都是虚构的/据我所知是虚构的
【问题讨论】:
-
如果您可以循环遍历,一次一行,对于单行,如
9,'zxvvgf@housecapades.com',0,0,1,1,0,1,1,您可以执行以下操作之一:1) 使用strpos/stripos确定是否有任何.co.uk在里面。 2)在,的基础上拆分内容,在$split[1]上做一些preg_match