当病例发生变化时,如何区分州、市和ZIPCODE

  • 本文关键字:何区 ZIPCODE 市和 变化 php
  • 更新时间 :
  • 英文 :


我发现了同样的问题,但这不是很有帮助,因为在很多情况下都不起作用。所以,我写这个问题可能有人有更好的解决方案

以下是我的地址示例。

[0] => "Skattkarr Varmland SE-65671" //Sweden
[1] => "Rayleigh , Essex SS6 8YJ" //UK
[2] => "Horgen, Zürich 8810" //Switzerland
[3] => "Edmonton Alberta T5A 2L8" //Canada
[4] => "REDDING, CA 96003" //USA
[5] => "New York, NY 96003" //USA
[6] => "New York NY 96003" //USA

我试了很多,但在很多情况下我都失败了。我可以通过2或3,但我不能全部通过。尤其是当国家发生变化时。

我尝试explode(" ",$addr[0]),它在0上给我状态,在1上给我城市,但我尝试使用explode(" ",$addr[6]),它会给我New作为状态,York作为城市。英国和加拿大的邮政编码也是错误的。

我的最后一个问题被标记为重复,但我的查询不同,这个问题对我没有帮助。

为了将这些字符串分为state city和zipcode,您需要定义适用于所有字符串的规则。

如果我们用空间把它们分开,纽约就不会工作,因为纽约是一个城市,但在中间有空间。如果我们用逗号分隔它们,有些就没有逗号了。如果我们用空格和逗号分隔,我们不能假设最后一项是邮政编码,因为T5A 2L8是邮政编码但会被分隔。

因此,我想不出任何规则可以适用于您的数据。您应该从如何分离和识别这些字符串开始。尝试将其应用于代码,我们将很乐意为您提供帮助。

我尝试使用OSM nominatim来分离和验证数据。

请求

https://nominatim.openstreetmap.org/search?format=json&limit=1&addressdetails=1&q=1088+伯顿+博士+REDDING,+CA+96003+US

响应

[
{
"place_id": 266720693,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
"osm_type": "way",
"osm_id": 10591437,
"boundingbox": [
"40.591203388592",
"40.591303388592",
"-122.34939939898",
"-122.34929939898"
],
"lat": "40.59125338859231",
"lon": "-122.34934939898274",
"display_name": "1088, Burton Drive, Lancer Hills Estates, Redding, Shasta County, California, 96003, United States",
"class": "place",
"type": "house",
"importance": 0.621,
"address": {
"house_number": "1088",
"road": "Burton Drive",
"neighbourhood": "Lancer Hills Estates",
"city": "Redding",
"county": "Shasta County",
"state": "California",
"postcode": "96003",
"country": "United States",
"country_code": "us"
}
}
]

这就是我真正想要的,地址字符串的分解。

最新更新