gpt4 book ai didi

php - 循环数据提取所有以 .co.uk 结尾的电子邮件地址

转载 作者:可可西里 更新时间:2023-11-01 07:30:26 26 4
gpt4 key购买 nike

我试图通过应对以下挑战来提高我的编程 (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.uklewisHamilton@carracing.co.uk

问题

我很难弄清楚如何解决这个问题,因为:

  1. 没有(大多数)电子邮件地址的字符数不同
  2. 电子邮件地址之间存在不相关的数据,更具体地说是数字,应忽略

我的逻辑/伪代码

  1. 找到行中的公分母(我注意到第一列是每行递增一个的整数)使用它为变量 $min$max< 赋值(在此示例中 $min=9$max=17)

  2. 使用上面分配的变量遍历行,每次迭代增加一个循环

  3. 内部循环忽略所有整数类型的字符

  4. 使用 pregmatch 查找以 .co.uk 结尾的电子邮件地址

  5. 如果找到则添加到数组 $couk_emails 否则循环到下一行

  6. 当循环结束时上传数组$couk_emails到数据库表

这就是我想出的逻辑/Psuedo,但我觉得它有缺陷。我认为这是一个相当困难的挑战,所以我很想听听有经验的程序员如何解决这类问题

注意这篇文章中的所有电子邮件地址都是虚构的/据我所知

最佳答案

为此尝试使用正则表达式
像这样的 -

'(.*?\.co\.uk)'

正则表达式 explanation here .

您可以使用 preg_match 将 php 中的字符串与正则表达式匹配功能。
用一个简单的例子测试这个 -

>>> $regex = "/'(.*?\.co\.uk)'/"
>>> $str = "(12,'BarackObama@googlemail.co.uk',1,0,9,1,1,1,1),"
>>> preg_match($regex, $str, $match)
=> 1
>>> $match
=> [
"'BarackObama@googlemail.co.uk'",
"BarackObama@googlemail.co.uk"
]

解释
在上面的代码中,preg_match 接受 $regex$str 进行匹配,并返回 01 取决于是否匹配字符串。

要提取字符串的电子邮件部分并丢弃其余部分(如正则表达式中使用的单引号),您需要将相应部分放在 capturing group 中。这将在第三个参数(上例中的 $match 变量)的匹配数组中返回。

最后,$match[0] 包含与正则表达式匹配的整个字符串,$match[1] 仅包含电子邮件。

关于php - 循环数据提取所有以 .co.uk 结尾的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com