使用 RegEx 从 PHP 中的字符串中提取地址

2023-12-20

我的问题

我正在尝试抓取各个链接美国众议院网站 http://www.house.gov/house/MemberWWW_by_State.shtml查找所有所列个人的华盛顿地址。问题是华盛顿地址的格式有时会有所不同。有时会有子弹、管道、新行和中断标签,使其难以匹配。


我正在尝试抓取许多页面以检索基本相似的地址:

忽略特殊的空白。这只是为了显示字符串部分的相似性



    1433 Longworth House Office Building Washington,  D.C. 20515
     332 Cannon HOB                      Washington   DC   20515
    1641 LONGWORTH HOUSE OFFICE BUILDING WASHINGTON,  DC   20515
    1238 Cannon H.O.B. (line return)
    Washington, DC 20515
    8293 Longworth House Office Building • Washington DC • 20515
    8293 Longworth House Office Building | Washington DC | 20515
  

其中每一个都会单独返回,并被大量其他文本和 html 标签包围。地址甚至可能在地址本身中包含

我想做的是捕获源字符串中的第一个匹配项,并将其设置为变量的值。根据我的理解,最好使用正则表达式来解决这个问题。

Update:

在详细了解了这些日子的各种出现方式后,我决定最好采用不太严格的表达方式。这些地址以项目符号、竖线和换行符的形式出现。也许传达以下信息的表达方式是最好的:

[数字][任意]["华盛顿"][任意][DC|D.C.][任意][五个数字]

显然,这太宽松了。这anything当我只对允许任何内容的几个字符感兴趣时,块会引入段落。

到目前为止,我未能成功匹配在以下地址中找到的地址(这些只是众多地址中的一小部分)

  • http://giffords.house.gov/ http://giffords.house.gov/
  • http://coffman.house.gov/ http://coffman.house.gov/
  • http://boyd.house.gov/ http://boyd.house.gov/

EDIT:看起来第一组数字和“华盛顿”之间的[任何]数据必须更加严格才能正常工作。 [anything] 部分不应包含任何数字,因为数字是我们用来分隔其中一个地址的开头的数字。这适用于您提供给我们的三个网站。

我想说最好的第一步是删除所有 HTML 标签并替换 ' ' 字符实体:

$input = strip_tags($input);
$input = preg_replace("/ /"," ",$input);

那么如果地址匹配(接近)您指定的格式,请执行以下操作:

$results= array();
preg_match("/[0-9]+\s+[^0-9]*?\s+washington,?\s*D\.?C\.?[^0-9]+[0-9]{5}/si",$input,$results);
foreach($result[0] as $addr){
    echo "$addr<br/>";
}

这适用于您提供的三个示例,并且$results[0]应包含找到的每个地址。

但是,例如,如果地址中有“公寓#2”或类似内容,则此方法不起作用,因为它假定最接近“华盛顿特区”的数字标记地址的开头。

以下脚本匹配每个测试用例:

<?php
    $input = "
        1433&nbsp;Longworth House Office Building Washington,  D.C. 20515
         332 Cannon HOB                      Washington   DC   20515
        1641 LONGWORTH HOUSE OFFICE BUILDING WASHINGTON,  DC   20515
        1238 Cannon H.O.B.
        Washington, DC 20515
        8293 Longworth House Office Building • Washington DC • 20515
        8293 Longworth House Office Building | Washington DC | 20515
    ";
    $input = strip_tags($input);
    $input = preg_replace("/&nbsp;/"," ",$input);

    $results= array();
    preg_match_all("/[0-9]+\s+[^0-9]*?washington,?\s*D\.?C\.?[^0-9]*?[0-9]{5}/si",$input,$results);
    foreach($results[0] as $addr){
        echo "$addr<br/>";
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RegEx 从 PHP 中的字符串中提取地址 的相关文章

  • 如何使用 Laravel 5.3 注销并重定向到登录页面?

    我正在使用 Laravel 5 3 并尝试实现身份验证系统 我用了php artisan命令make auth来设置它 我根据我的布局编辑了视图 并将其重定向到我的仪表板页面而不是主页 在设置中设置为默认值 现在 当我尝试注销时 它向我抛出
  • 如何从循环内的字符串中删除最后一个字符

    我正在尝试在 xml 中的一行中打印所选的不同类别 喜欢
  • 将加载 gif 添加到简单脚本中

    我对 Javascript 真的很陌生 但我已经有了这个加载 url 内容的脚本 一切都工作正常 我使用按钮上的 onClick 方法调用 plannerSpin 函数 但是当这一切发生时 我将如何显示动画 gif var xmlHttp
  • 如何通过 md5 比较图像?

    该方法是否比较图像的像素值 我猜它不会起作用 因为它们的尺寸彼此不同 但如果它们相同但格式不同怎么办 例如 我截图并保存为 jpg另一个并保存为 gif MD5哈希是实际的二进制数据 因此不同的格式将具有完全不同的二进制数据 因此 要使 M
  • 仅当用户打印时如何重定向到另一个页面

    我一直在尝试找到一种在用户实际打印时重定向到另一个页面的方法 也就是说 只有当他们从打印时打开的选项卡中单击该打印按钮时 我才想重定向 我不想要这种方法 function myFunction window print window loc
  • 在路线中使用中间件的车队购物车,但我在项目中找不到任何 $routemiddleware...甚至在 kernel.php 中也找不到...我在哪里可以找到它?

    在路线中使用中间件的车队购物车 但我在项目中找不到任何 routemiddleware 甚至在 kernel php 中也找不到 我在哪里可以找到它 Laravel 版本 5 7 护照版本 7 5 CMS 舰队购物车 内核 php name
  • 如何让 Vim 匹配不以七位数字开头的行?

    我有一个大约 1000 行的文件 除个别行外 所有行均以七位数字开头 我需要捕捉这些行并将它们与前一行实际连接起来 我已经成功地能够使用以下正则表达式模式匹配以七位数字开头的任何行 d 7 我似乎无法让它匹配任何一行不匹配不过 这种模式确实
  • 传递表单变量的安全方式

    我正在为我的 WordPress 主题构建联系表单 我希望能够从后端输入接收者地址 目前我正在传递带有隐藏输入字段的变量
  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • Mongo 正则表达式用于“不匹配”或反向[重复]

    这个问题在这里已经有答案了 我的 mongo 文档都包含一个名为templateName 有一些包含该值的文档 a SystemDefaultTemplate b SystemDefaultTemplate c SystemDefaultT
  • PHP、in_array 和数组中的快速搜索(到最后)

    我对在数组中进行快速搜索的更好方法有疑问 我正在谈论一个特定的情况 假设我有一个数组 L A B C 当我开始时 当程序运行时 L 可能会增长 但到最后 当我进行搜索时 一个可能的原因是 L A B C D E 事实是 当我搜索时 我想要找
  • 用于匹配重复子字符串的单个js正则表达式?

    假设我有一个字符串 例如 where is mummy where is daddy 我想用空字符串替换任何一组重复子字符串 所以在这种情况下where and is元素将被删除 结果字符串将是 mummy daddy 我想知道是否有任何单
  • 根据用户的时间设置问候语(早上好,下午好......)

    任何人都可以推断如何根据用户的时间设置实现基本的 晚上好 或 早上好 也许 PHP 会获取服务器时间 但我希望用基于时间的适当问候语来问候网站访问者 并考虑到他们一天中的时间 E G 早上好 晚上好 下午好 基于它 getHours 日期对
  • PHP 多个 Curl 请求

    我目前经常使用 PHP 的 Curl 每次获取100页左右的结果需要花费很多时间 对于每个请求 我都使用这样的代码 ch curl init get source curl close ch 我有什么选择可以加快速度 我应该如何使用mult
  • MySQL 查询按父级排序然后子级排序

    我的数据库中有一个页面表 每个页面可以有一个父页面 如下所示 id parent id title 1 0 Home 2 0 Sitemap 3 0 Products 4 3 Product 1 5 3 Product 2 6 4 Prod
  • 单击保存文件

    我希望能够通过单击下载 csv 文件 而不是在浏览器中打开 我把这段代码 a href file csv download file a 但单击它会在浏览器中打开 v 文件 在本地主机中 当我单击链接时 它正在下载 但在服务器上时 它在浏览
  • 使用 PHP MySql 进行关键字搜索?

    我的 mysql 表中有标题 varchar 描述 text 关键字 varchar 字段 我保留了关键字字段 因为我认为我只会在这个字段中搜索 但我现在需要在所有三个字段中进行搜索 所以对于关键字 word1 word2 word3 我的
  • 谷歌图片搜索API

    我有一个网站 用户可以在其中提交图片 我想用这些图片自动在 Google 上进行搜索 以尽量减少图片被从其他网站盗用的可能性 我知道 Firefox 扩展 但这需要我右键单击每张图片并等待结果出现 我想自动化这个 我一直在寻找 API 但
  • PHP Session Id 在页面之间发生变化

    我有一个问题 我在 2 个页面之间丢失了 PHP 会话 session start 包含在一个名为 session inc php 的文件中 该文件包含在每个需要设置会话的页面中 这适用于网站上除一个特定页面 member profile
  • cUrl 在本地主机上工作正常,但在服务器上不起作用,仅显示空白页面

    当我在服务器上运行以下代码时 它只显示空白页面并突然停止进一步执行 我还检查了已安装的服务器上的 cUrl 这是我的代码 ftp server ftps server Voorraadtonen link csv ch curl init

随机推荐

  • 计算选项集合中出现次数的惯用方法

    我想计算选项集合中某个值出现的次数 let v vec Some 1 Some 1 Some 3 None v iter filter Some x x 1 count 这样做会给出refutable pattern not covered
  • 如何管理企业分发证书过期?

    我们的客户刚刚加入 iOS 开发者企业计划 他们已使用其企业发行版签署了该应用程序 由我们开发 并通过 MDM 在某些设备中成功安装了该应用程序 据我所知 当我的非企业分发证书到期时 我必须更新它 一旦设备根据 Apple 的 OCSP 服
  • 如何通过javascript检测浏览器中是否按下停止加载按钮?

    如何通过 javascript 检测浏览器中是否按下停止加载按钮或页面是否仍在加载 假设脚本到达浏览器并且在按下 停止加载按钮 时不会停止执行 这可能是一个可行的选择 使用它仍然可以有未加载的资源 但会给你一个良好的开端
  • 在小写和大写之间添加空格?

    当字符串中包含大写字符或下划线时 我想添加一个空格 我该怎么做呢 实施例1 您可以使用匹配小写字符后跟大写字符的正则表达式 并在以下字符之间添加可选的下划线 string output Regex Replace input a z A Z
  • 车把动态部分块

    我有一个像这样的文件夹结构 components foo index js foo handlebars foo scss bar index js bar handlebars bar handlebars 为了方便地解析组件部分 我提供
  • UIImagePickerController 第一次打开速度很慢,双击时除外

    我在 iOS 9 上遇到了这种非常奇怪的行为 我有一个tableViewCell这会打开一个imagePicker当点击拍摄某物的照片时 当您第一次点击单元格时 需要大约 10 秒才能打开选择器 但是当您点击它两次时 它会立即打开 选择器的
  • 将数据写入assets目录下的.properties文件

    我的资产文件夹中有 config properties 我尝试获取数据并将其写入该文件 当我尝试获取数据 getProperty 时 一切正常 但是何时写入 setProperty 我在日志和数据中收到 java io IOExceptio
  • Meteor:将 Mongo Selector 从客户端传递到服务器的最佳方法

    我有一个如下所示的 mongo 集合 Foo X 键 Bars 值 编辑 我来自关系数据库背景 显然我的收藏不像下面这样 但你明白了 Foo1 Foo2 Foo3 Barbar Barbar Bar bar Bar BarBar Bar b
  • 添加新项目时更新列表

    使用 Angular 7 我有以下服务 StackBlitz 示例 https stackblitz com edit mk angular sync list Injectable providedIn root export class
  • Plon:如何对文件夹项目进行排序

    我有一个名为myfolder 里面有一些项目 例如 item1 item2 item3 等等 当我添加 portlet 时Navigation到页面左栏 并输入到文件夹中myfolder 它向我展示了 portlet 上的链接 如下所示 i
  • 如何将变量和数据从 PHP 传递到 JavaScript?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我在 PHP 中有一个变量 我在 JavaScript 代码中需要它的值 如何将我的变量从 PHP 转换为 JavaScrip
  • 使用 JPA 和 Hibernate 在 Persistence.xml 中配置 C3P0

    好吧 我第一次尝试使用 JPA Hibernate Spring 配置 C3P0 在 persistence xml 我有
  • pickerInput 默认选择所有选项

    我有大约十几个 pickerInputs 每次我运行我的闪亮应用程序时 所有内容都设置为没有选择 在输出工作之前我必须手动选择所有内容 这有点烦人 有没有办法让 pickerInput 在每次应用程序运行时默认 全选 您可以使用select
  • JavaScript 在 IE8 中不起作用

    我试图在页面加载时动态创建这个 html 元素 但是 当我运行它时 代码在 IE8 上不起作用 但在 Firefox safari 和其他浏览器中可以 function getmovie var container document get
  • React Hook - 只监听窗口 *宽度* 大小的变化

    我有一个可以听的钩子window resize事件 我只想听并更新window innerWidth变化 我希望忽略更改window innerHeight因为打开软键盘时会触发此操作 问题是 mediaSize 存储在我的 Redux S
  • 如何使用asp.net core razor Pages在CKEditor 5中上传图像

    ClassicEditor create document querySelector News Body language fa ckfinder uploadUrl URL catch error gt console error er
  • Java/iText/Flying Saucer:将包含 svg 标签的 HTML 转换为 pdf

    我正在尝试从 HTML 生成 Java 中的 pdf 文件 HTML 代码包含由 Google Charts API 生成的 svg 标签 用于显示柱形图 我尝试用 Flying Saucer R8 来做到这一点 如下所示 StringBu
  • 如何在南希显示我的 404 页面?

    我需要像这样在 Nancy 显示我的 404 错误页面 if ErrorCode 404 return View 404 html 怎么做 nemesv 的答案是正确的 但我只想添加一个使用 ViewRenderer 而不是 Generic
  • XmlPullParser getAttributeValue 返回 null

    我有以下 XML 结构存储在我的资产 xml folder
  • 使用 RegEx 从 PHP 中的字符串中提取地址

    我的问题 我正在尝试抓取各个链接美国众议院网站 http www house gov house MemberWWW by State shtml查找所有所列个人的华盛顿地址 问题是华盛顿地址的格式有时会有所不同 有时会有子弹 管道 新行和