草庐IT

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

coder 2023-10-10 原文

我试图通过应对以下挑战来提高我的编程 (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/

有关php - 循环数据提取所有以 .co.uk 结尾的电子邮件地址的更多相关文章

  1. ruby - 树顶语法无限循环 - 2

    我脑子里浮现出一些关于一种新编程语言的想法,所以我想我会尝试实现它。一位friend建议我尝试使用Treetop(Rubygem)来创建一个解析器。Treetop的文档很少,我以前从未做过这种事情。我的解析器表现得好像有一个无限循环,但没有堆栈跟踪;事实证明很难追踪到。有人可以指出入门级解析/AST指南的方向吗?我真的需要一些列出规则、常见用法等的东西来使用像Treetop这样的工具。我的语法分析器在GitHub上,以防有人希望帮助我改进它。class{initialize=lambda(name){receiver.name=name}greet=lambda{IO.puts("He

  2. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  3. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby-on-rails - 跳过状态机方法的所有验证 - 2

    当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

  6. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  7. ruby - Nokogiri 剥离所有属性 - 2

    我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog

  8. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  9. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  10. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

随机推荐